ios核心动画之基本动画

  •  Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理api,使用它能做出非常绚丽的动画效果,而且往往事半功倍。也就是说食用少量的代码就能实现非常强大的功能。
  •  Core Animation可以用在Mac OS X和IOS平台
  •  Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。
  •  要注意的是,Core Animation是直接作用在CALayer上的,并非UIView

 Core Animation的使用步骤

  1. 要先添加QuartzCore.framework框架和引入主头文件<QuartzCore/QuartzCore.h>(ios7不需要)
  2. 初始化一个CAAnimation对象,并设置一些动画相关属性
  3. 通过调用CALayer的addAimation:forKey:方法增加CAAnimation对象到CALayer中,这样就能开始执行动画了
  4. 通过调用CALayer的removeAnimationForKey:方法可以停止CALAYER的动画
  1 @interface NJViewController ()
  2 
  3 @property (nonatomic, strong) CALayer *myLayer;
  4 
  5 @end
  6 
  7 @implementation NJViewController
  8 
  9 - (void)viewDidLoad
 10 {
 11     [super viewDidLoad];
 12     // 1.创建layer
 13     CALayer *myLayer = [CALayer layer];
 14     myLayer.bounds = CGRectMake(0, 0, 100, 100);
 15     
 16     myLayer.anchorPoint = CGPointZero;
 17     myLayer.position = CGPointMake(100, 100);
 18     myLayer.backgroundColor = [UIColor greenColor].CGColor;
 19     // 2.将自定义Layer添加到控制器的view的layer上
 20     [self.view.layer addSublayer:myLayer];
 21     
 22     self.myLayer = myLayer;
 23 
 24 }
 25 
 26 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 27 {
 28     // 1. 创建核心动画
 29     CABasicAnimation *anima = [CABasicAnimation animation] ;
 30     // 1.1设置动画类型
 31 //    anima.keyPath = @"transform.translation.x";
 32     anima.keyPath = @"transform.scale.y";
 33     
 34     // 1.2 设置动画执行完毕之后不删除动画
 35     anima.removedOnCompletion = NO;
 36     // 1.3 设置保存动画的最新状态
 37     anima.fillMode = kCAFillModeForwards;
 38     // 1.4设置动画时间
 39     anima.duration = 1;
 40     
 41     // 1.5如何动画
 42 //    anima.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 100, 1)];
 43 //    anima.toValue = @(100);
 44     anima.toValue = @(1.5);
 45  
 46     
 47     // 2.添加核心动画到Layer
 48     [self.myLayer addAnimation:anima forKey:nil];
 49 
 50 }
 51 
 52 - (void)test2
 53 {
 54     // 1. 创建核心动画
 55     CABasicAnimation *anima = [CABasicAnimation animation] ;
 56     // 1.1设置动画类型
 57     anima.keyPath = @"transform";
 58     
 59     
 60     // 1.2 设置动画执行完毕之后不删除动画
 61     anima.removedOnCompletion = NO;
 62     // 1.3 设置保存动画的最新状态
 63     anima.fillMode = kCAFillModeForwards;
 64     // 1.4设置动画时间
 65     anima.duration = 1;
 66     
 67     // 1.5修改动画
 68     anima.toValue =  [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];
 69     
 70     // 2.添加核心动画到Layer
 71     [self.myLayer addAnimation:anima forKey:nil];
 72 }
 73 
 74 
 75 - (void)test1
 76 {
 77     // 1. 创建核心动画
 78     CABasicAnimation *anima = [CABasicAnimation animation] ;
 79     // 1.1设置动画类型
 80     anima.keyPath = @"bounds";
 81     
 82     // 1.2 设置动画执行完毕之后不删除动画
 83     anima.removedOnCompletion = NO;
 84     // 1.3 设置保存动画的最新状态
 85     anima.fillMode = kCAFillModeForwards;
 86     // 1.4设置动画时间
 87     anima.duration = 1;
 88     
 89     // 1.5修改动画
 90     anima.toValue =[NSValue valueWithCGRect: CGRectMake(0, 0, 200, 200)];
 91     
 92     // 2.添加核心动画到Layer
 93     [self.myLayer addAnimation:anima forKey:nil];
 94 }
 95 
 96 - (void)test
 97 {
 98     // 1. 创建核心动画
 99     CABasicAnimation *anima = [CABasicAnimation animation] ;
100     // 1.1告诉系统要执行什么样的动画
101     anima.keyPath = @"position";
102     // 设置通过动画将layer从哪
103     //    anima.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
104     // 到哪(到指定的位置)
105     anima.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
106     //    在当前位置的基础上增加多少
107     //    anima.byValue = [NSValue valueWithCGPoint:CGPointMake(0, 300)];
108     
109     // 设置动画时间
110     anima.duration = 5;
111     
112     // 1.2 设置动画执行完毕之后不删除动画
113     anima.removedOnCompletion = NO;
114     // 1.3 设置保存动画的最新状态
115     anima.fillMode = kCAFillModeForwards;
116     
117     // 2.添加核心动画到Layer
118     [self.myLayer addAnimation:anima forKey:nil];
119 }
120 
121 
122 @end

 

转载于:https://www.cnblogs.com/PJHome/p/5154861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值