首页 > 代码库 > iOS 动画

iOS 动画

一 UIKIT层动画

  1. transform    实为映射,原位置不变,可以映射出平移,旋转,缩放

  2. contentStretch   可以设置拉伸区域


法一:用简单上下文实现

    //开始创建动画,第一个参数可以看成动画的标识符,当有多个动画时可以用来区分,只有一个参数可以不设置,空参数为nil,第二个参数为上下文参数,空指针为NULL

    [UIView beginAnimations:nil context:NULL];

    

    //设置动画的时间,补充知识点:系统动画时间(比如点击文本框弹出键盘时间,或者界面切换时间,键盘弹出动画时间是可以通过通知获取的)大约为0.250.3

    [UIView setAnimationDuration:0.3];

    //设置动画曲线,有四种,线性,淡入,淡出,淡入淡出结合,一般系统动画都是淡入淡出

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

    

    //设置动画的终点

    self.animationView.frame = CGRectMake(150, 200, 50, 50);

    self.animationView.backgroundColor = [UIColor blueColor];

    //提交动画,提交动画后系统会单独开辟一个线程运行动画生成的关键帧,所以动画是独立于主线程之外的,不会卡主线程

    [UIView commitAnimations];


法二:用代码块实现(推荐)

    1.  [UIView animateWithDuration:3 animations:^{

        

        }];

    

    2.  [UIView animateWithDuration:3 animations:^{

        

        } completion:^(BOOL finished) {

        

        }];;

    

    3.  //option参数是设置动画出现属性,如淡入淡出等

        [UIView animateWithDuration:3 delay:1 options:UIViewAnimationOptionAutoreverse animations:^{

            self.animationView.frame = CGRectMake(150, 200, 50, 50);


        } completion:^(BOOL finished) {

            self.animationView.frame = CGRectMake(100, 100, 100, 100);

        }];


二 CALayer层动画

CALayer对象中实际包含了一个表现层和一个模型层

1.模型层:是用来在内存中存储必要的图层信息。

2.表现层:是用来将图形层显示在屏幕上,并为此做了相应的优化。

(比如说做一个改变颜色的动画,原来是***,点击按钮后改成红色,开始时,模型层是***,点击按钮时模型层还是***,表现层变为红色)

  1. 隐式动画:用作动画的属性是在模型层中被修改的,然后通过表现层传递出来,并最终显示在屏幕上,效果为动画结束的样式,uikit中的动画效果都为隐式动画。

  2. 显示动画:进行动画的属性只存在表现层,而模型层的属性值保持不变,在动画结束后,CALayer对象会回到动画之前的状态,CoreAnimation框架中的动画都是显示动画,显示动画可以进一步提升动画性能


用layer时,在动画过程中,称动态layer,此时模型层和显示层不一定一致,动画结束后,变为静态layer,此时模型层和显示层一致


CALayer的使用:

  1. 要导入QuartzCore.framework框架,不然CALayer有些方法用不了

  2. CALayer里也有transform属性,不过和uikit中的transform不一样,这里的transform可以支持3d

iOS 动画