iOS简单动画效果:闪烁、移动、旋转、路径、组合
- #define kDegreesToRadian(x) (M_PI * (x) / 180.0)
- #define kRadianToDegrees(radian) (radian*180.0)/(M_PI)
- - (void)viewDidLoad
- {
- [superviewDidLoad];
- self.title = @"测试动画";
- self.view.backgroundColor = [UIColorlightGrayColor];
- myTest1 = [[UILabelalloc]initWithFrame:CGRectMake(10, 100, 60, 40)];
- myTest1.backgroundColor = [UIColorblueColor];
- myTest1.textAlignment = NSTextAlignmentCenter;
- myTest1.text = @"张明炜";
- myTest1.textColor = [UIColorwhiteColor];
- [self.viewaddSubview:myTest1];
- //闪烁效果。
- // [myTest1.layer addAnimation:[self opacityForever_Animation:0.5] forKey:nil];
- ///移动的动画。
- // [myTest1.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]] forKey:nil];
- //缩放效果。
- // [myTest1.layer addAnimation:[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT] forKey:nil];
- //组合动画。
- // NSArray *myArray = [NSArray arrayWithObjects:[self opacityForever_Animation:0.5],[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]],[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT], nil];
- // [myTest1.layer addAnimation:[self groupAnimation:myArray durTimes:3.0f Rep:MAXFLOAT] forKey:nil];
- //路径动画。
- // CGMutablePathRef myPah = CGPathCreateMutable();
- // CGPathMoveToPoint(myPah, nil,30, 77);
- // CGPathAddCurveToPoint(myPah, nil, 50, 50, 60, 200, 200, 200);//这里的是控制点。
- // [myTest1.layer addAnimation:[self keyframeAnimation:myPah durTimes:5 Rep:MAXFLOAT] forKey:nil];
- //旋转动画。
- [myTest1.layeraddAnimation:[selfrotation:2degree:kRadianToDegrees(90) direction:1repeatCount:MAXFLOAT] forKey:nil];
- }
- #pragma mark === 永久闪烁的动画 ======
- -(CABasicAnimation *)opacityForever_Animation:(float)time
- {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];//必须写opacity才行。
- animation.fromValue = [NSNumber numberWithFloat:1.0f];
- animation.toValue = [NSNumber numberWithFloat:0.0f];//这是透明度。
- animation.autoreverses = YES;
- animation.duration = time;
- animation.repeatCount = MAXFLOAT;
- animation.removedOnCompletion = NO;
- animation.fillMode = kCAFillModeForwards;
- animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];///没有的话是均匀的动画。
- return animation;
- }
- #pragma mark =====横向、纵向移动===========
- -(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x
- {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];///.y的话就向下移动。
- animation.toValue = x;
- animation.duration = time;
- animation.removedOnCompletion = NO;//yes的话,又返回原位置了。
- animation.repeatCount = MAXFLOAT;
- animation.fillMode = kCAFillModeForwards;
- return animation;
- }
- #pragma mark =====缩放-=============
- -(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repertTimes
- {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
- animation.fromValue = Multiple;
- animation.toValue = orginMultiple;
- animation.autoreverses = YES;
- animation.repeatCount = repertTimes;
- animation.duration = time;//不设置时候的话,有一个默认的缩放时间.
- animation.removedOnCompletion = NO;
- animation.fillMode = kCAFillModeForwards;
- return animation;
- }
- #pragma mark =====组合动画-=============
- -(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes
- {
- CAAnimationGroup *animation = [CAAnimationGroupanimation];
- animation.animations = animationAry;
- animation.duration = time;
- animation.removedOnCompletion = NO;
- animation.repeatCount = repeatTimes;
- animation.fillMode = kCAFillModeForwards;
- return animation;
- }
- #pragma mark =====路径动画-=============
- -(CAKeyframeAnimation *)keyframeAnimation:(CGMutablePathRef)path durTimes:(float)time Rep:(float)repeatTimes
- {
- CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
- animation.path = path;
- animation.removedOnCompletion = NO;
- animation.fillMode = kCAFillModeForwards;
- animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
- animation.autoreverses = NO;
- animation.duration = time;
- animation.repeatCount = repeatTimes;
- return animation;
- }
- #pragma mark ====旋转动画======
- -(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount
- {
- CATransform3D rotationTransform = CATransform3DMakeRotation(degree, 0, 0, direction);
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
- animation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
- animation.duration = dur;
- animation.autoreverses = NO;
- animation.cumulative = NO;
- animation.fillMode = kCAFillModeForwards;
- animation.repeatCount = repeatCount;
- animation.delegate = self;
- return animation;
- }
iOS简单动画效果:闪烁、移动、旋转、路径、组合的更多相关文章
- iOS各种动画效果
ios各种动画效果 最普通动画: //开始动画 [UIView beginAnimations:nil context:nil]; //设定动画持续时间 [UIView setAnimationDu ...
- 原生JS封装简单动画效果
原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...
- ios开发之--简单动画效果的添加
记录一个简单的动画效果,自己写的,很简单,仅做记录. 附一个demo的下载地址: https://github.com/hgl753951/hglTest.git 代码如下: 1,准备 BOOL _i ...
- iOS添加到购物车的简单动画效果
#pragma mark - 添加到购物车的动画效果 // huangyibiao - (void)addAnimatedWithFrame:(CGRect)frame { // 该部分动画 以sel ...
- iOS 转盘动画效果实现
代码地址如下:http://www.demodashi.com/demo/11598.html 近期公司项目告一段落,闲来无事,看到山东中国移动客户端有个转盘动画挺酷的.于是试着实现一下,看似简单,可 ...
- iOS的动画效果类型及实现方法
实现iOS漂亮的动画效果主要有两种方法, 一种是UIView层面的, 一种是使用CATransition进行更低层次的控制, 第一种是UIView,UIView方式可能在低层也是使用CATransit ...
- iOS 帧动画之翻转和旋转动画
记录两个比较简单的动画,一个是翻转的动画,一个是旋转的动画. 旋转动画: 1 [UIView animateWithDuration:3 animations:^{ if (formView) { f ...
- iOS开动画效果之──实现 pushViewController 默认动画效果
在开发中,视图切换会常常遇到,有时我们不是基于导航控制器的切换,但实际开发中,有时需要做成push效果,下面将如何实现push和pop 默认动画效果代码实例: 一.push默认动画效果 CATrans ...
- jQuery之简单动画效果
1. show()显示动画 语法:show(speed,callback) Number/String,Function speend为动画执行时间,单位为毫秒.也可以为slow",&quo ...
随机推荐
- html页面的音频问题
导火线 : 负责了项目中的话务间模块,处理音频出了一点问题 之前的处理 : //循环播放声音 var dialAudioDocument = document.createElement('audio ...
- form表单转换为Json数据
最近对前端js学习有点多,如今想自己动手写点插件,后来发现,我想到的,其他人都想到了.于是做了以下笔记. 使用插件: 插件 :https://github.com/marioizquierdo/jqu ...
- http常见状态码含义
200:请求成功 301:请求的资源已永久移动到新位置 302:请求的资源临时移动到新位置 304:请求内容无改变 401:未授权 403:禁止访问 404:文件未找到 500:服务器内部错误 501 ...
- 微信小程序--合法域名校验出错
第一次做小demo的时候遇到一个问题,合法域名校验出错: 第一步:登陆微信公众号平台--个人中心--设置--开发设置--服务器域名(一个月只有5次修改机会一定要珍惜) 第二步 打开微信开发者工具,有个 ...
- Sql的基础知识提升(二)
二.提升 1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access 可用) 法一:select * into b from a where 1<>1(仅用于 SQlServe ...
- meterpreter_paranoid_mode.sh允许用户安全上演/无级连接Meterpreter经检查合格证书的处理程序正在连接到
刚刚看完即刻安全大咖的新姿势感觉很6逼,结果成功了meterpreter_paranoid_mode.sh允许用户安全上演/无级连接Meterpreter经检查合格证书的处理程序正在连接到. 我们开始 ...
- Javascript闭包的几种用法
一.什么是闭包和闭包的几种写法和用法 1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点: 1. ...
- Java多线程学习开发笔记
线程有有序性和可见性 多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现. 在多个线程之间共享类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线 ...
- maven学习3,如何创建一个web项目
Maven学习 (三) 使用m2eclipse创建web项目 1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容 2.新建一个maven的项目 ...
- spring如何控制事务
Spring 的事务,可以说是 Spring AOP 的一种实现. AOP面向切面编程,即在不修改源代码的情况下,对原有功能进行扩展,通过代理类来对具体类进行操作. spring是一个容器,通过spr ...