一、Core Animation
Core Animation 核心动画框架,它是Core Quartz框架的子类 ,它分为:基础动画、关键帧动画、动画组、转场动画。
1、CAAnimation 是核心动画的基础类,它实现了CAMedia Timing协议,不能直接使用它来创建基础动画对象,使用CABasicAnimation来创建,它控制动画的运行时间和动画运行的间隔时间。
2、CAPropertyAnimation属性动画,不能直接使用来创建动画对象,可以通过设置能够动画的属性来实现动画效果。
3、CAAnimationGroup 动画组,可以组合进行对多个动画进行统一管理,所有动画可以并发执行。
4、CATransition转场动画利用滤镜来控制动画;
5、CABasicAnimation 基础动画,只要设置初始和结束的状态值就可以实现动画效果,中间的叫补间动画,动画的完成是由系统自动计算;
6、CAKeyframeAnimation关键帧动画,除了设置初始和结束的状态值以外还可以设置中间的多个属性,总之两者都是通过设置属性来控制动画,补间动画同上;
二、基础动画(CABasicAnimation)
在开发中我们使用UIView封装的动画块代码足以达到我们的需求,比如图片的放大缩小,头像的翻转,tabBar等按钮的点击效果等等,但是我们只是单纯的在使用UIView封装好的动画block,直到block完成中间动画的细节无法控制,所以有时需哟对动画的中间过程需要控制的话就要创建动画。
创建基础动画的步骤:
1、初始化一个CABasicAnimation对象;
2、 设置动画的初始值和结束值和一些动画的属性;
3、给layer添加动画;
三、关键帧动画
创建关键帧动画的步骤是和基本动画一样的,只是需要手动指定几个关键点的动画状态,实现的方式有两种:
1、指定几个关键帧的关键状态属性来控制动画的实现;
2、通过指定path来绘制关键帧动画,优先级高于指定属性,如果指定了用path那么属性的方式就无效;
注:通过path的实例,比如电商app加入购物车的动画,就是利用贝塞尔曲线来绘制动画
绘制贝塞尔曲线
CGPathRef path=CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, _layer.position.x, _layer.position.y);//移动到起始点
CGPathAddCurveToPoint(path, NULL, 160, 280, -30, 300, 55, 400);
//绘制二次贝塞尔曲线
四、动画组
动画组就是一系列动画的组合,创建多个单个的动画添加到动画组当中,然后再把动画添加到layer上实现复合型动画效果;
五、转场动画
当从一个页面切换到另一个页面的时候或者两个场景进行切换的时候就用到了转场动画;
创建转场动画的步骤:
1、创建转场动画的子对象;
2、设置转场动画转场类型、子类型、和其他属性;
3、设置转场后新视图的动画并添加动画到图层;