iOS 核心动画 Core Animation

Posted 知吾猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 核心动画 Core Animation相关的知识,希望对你有一定的参考价值。

相关资料:

这个理论比较多:http://www.360doc.com/content/15/0727/09/20918780_487655250.shtml

这个实践比较多,常见的效果都有了http://www.cnblogs.com/wengzilin/p/4250957.html

例子:放大效果。思路是让CALayer动,CABasicAnimation是怎么动,然后将动画加到CALayer

    //演员初始化
    CALayer *scaleLayer = [[CALayer alloc] init];
    scaleLayer.backgroundColor = [UIColor blueColor].CGColor;
    scaleLayer.frame = CGRectMake(100, 100, 50, 50);
    scaleLayer.cornerRadius = 10;
    [self.view.layer addSublayer:scaleLayer];
 
    
    //设定剧本
    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0];
    scaleAnimation.toValue = [NSNumber numberWithFloat:1.5];
    scaleAnimation.autoreverses = YES;
    scaleAnimation.fillMode = kCAFillModeForwards;
    scaleAnimation.repeatCount = MAXFLOAT;
    scaleAnimation.duration = 0.8;
    
    //开演
    [scaleLayer addAnimation:scaleAnimation forKey:@"scaleAnimation"];

 

思考:这边要新建一个CALayer,但是如果我想让界面上某个UIView动起来(可能是一个按钮、图片,等)

其实所有的视图都继承UIView,每个UIView都有CALayer的属性(见第一个参考资料的描述)

所以,我们可以直接将动画加在view的layer上。这样代码就变得更易懂了。

下面是个视图旋转的例子,么么哒

    UIView *v = [[UIView alloc]initWithFrame:CGRectMake(200, 100, 50, 50)];
    v.backgroundColor = [UIColor redColor];
    [self.view addSubview:v];
    CABasicAnimation *an2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    an2.fromValue = 0;
    an2.toValue = [NSNumber numberWithFloat:M_PI*2];
    an2.repeatCount = MAXFLOAT;
    an2.duration = 0.8;
    [v.layer addAnimation:an2 forKey:@"caan"];

 

以上是关于iOS 核心动画 Core Animation的主要内容,如果未能解决你的问题,请参考以下文章

iOS核心动画Core Animation

iOS - Core Animation(核心动画)

ios之核心动画(Core Animation)

ios开发之核心动画四:核心动画-Core Animation--CABasicAnimation基础核心动画

iOS 核心动画 Core Animation

核心动画编程指南Core Animation Programming Guide - iOS