Core Animation

Core Animation_第1张图片
继承结构.png

CAAnimation 继承关系:

 - CAAnimationGroup
 - CAPropertyAnimation 
     *  CABasicAnimation 
     *  CAKeyframeAnimation 
 
 - CATransition 
 - Catransaction (CATransaction 事务类,用于begin&commit 方法制作动画的)
  • CALayer 属性

Core Animation_第2张图片

Core Animation_第3张图片
layer属性

对象是CALayer类型的,直接修改支持隐性动画的属性,就会有动画效果

直接修改UIView类型的属性,没有动画效果

  • UIView关联的图层禁用了隐式动画,对这种图层做动画的唯一办法就是使用UIView的动画函数(而不是依赖CATransaction),或者继承UIView
    ,并覆盖-actionForLayer:forKey:方法,或者直接创建一个显式动画

  • 对于单独存在的图层,我们可以通过实现图层的-actionForLayer:forKey:委托方法,或者提供一个actions字典来控制隐式动画。


一. CAPropertyAnimation

1.1 CABasicAnimation
1.2 CAKeyframeAnimation

二. CATransition

****做转场动画效果****

三. CATransaction

CATransaction用来管理事务

  • 事务实际上是Core Animation用来包含一系列属性动画集合的机制,任何用指定事务去改变可以做动画的图层属性都不会立刻发生变化,而是当事务一旦*提交*的时候开始用一个动画过渡到新值。

  • UIView有两个方法,

    • beginAnimations:context:
    • +commitAnimations
  • CATransaction 也类似的

    • +begin
    • +commit

他们方法类似,实际上在+beginAnimations:context:和+commitAnimations
之间所有视图或者图层属性的改变而做的动画都是由于设置了CATransaction
的原因

注: 这两种动画使用方式差不多,原因是他们原理差不多


图层动画的本质就是将图层内部的内容转化为位图经硬件操作形成一种动画效果,其实图层本身并没有任何的变化

  • 动画完成之后图层还是在原来的显示位置没有任何变化,如果这个图层在一个UIView中你会发现在UIView移动过程中你要触发UIView的点击事件也只能点击原来的位置(即使它已经运动到了别的位置),因为它的位置从来没有变过。

你可能感兴趣的:(Core Animation)