CAAnimation的分类
属性动画 CAPropertyAnimation
根据官方文档CAAnimation的继承树和官方文档CAAnimation入门 我们可以得出两条结论
- CAAnimation是基于OpenGL、OpenELS、Core Graphics的动画
- CAAnimation中可以分为CAPropertyAnimation和CATransition两种,其中最常用的CABasicAnimation和CAKeyframeAnimation都是CAPropertyAnimation的子类
根据官方文档描述,无论你使用CABasicAnimation 还是 CAKeyframeAnimation 都是在使用 CAPropertyAnimation
隐式动画 Implicit Animation
在官方文档高级动画技巧中,还提到了另外一个方式来做动画 CATransaction 动画事务,概念类似于数据库中的事务,可以参考文章Java中的事务,根据官方文档描述
1 | Core Animation automatically creates an implicit transaction whenever you add explicit or implicit animations to one of your layers. However, you can also create explicit transactions to manage those animations more precisely. |
其实任何一个你新建的动画,都会自带一个隐式动画事务(Implicit Transaction),你也可以自己使用CATransaction来显式声明(Explicit),其过使用方式为面向过程的方式
1 | [CATransaction begin]; |
CATransaction只能控制Layer的动画,如果想对view.layer进行控制,则需要使用UIView的类方法
1 | UIView.beginAnimations(nil, context: nil) |
关于事务的概念这里就不再赘述,可以参考Java中的概念