隐式动画

iOS核心动画笔记7-隐式动画

こ雲淡風輕ζ 提交于 2019-11-30 12:34:30
隐式动画 1. 事务 Core Animation 基于一个假说, 屏幕上任何东西都可以(或者可能)做动画. 动画并不需要再Core Animation中手动打开, 相反的需要明确的关闭, 否则将一直存在. 当改变CALayer的一个可做动画的属性, 改变并不会立刻在屏幕上体现出来, 它会从从前的值平滑的过渡到新的值. 这一切都是默认的行为, 不需要我们做任何操作. 这就是隐式动画. 我们并不需要指定动画类型, 仅仅改变一个属性, 然后Core Animation会决定如何并且何时去做动画. 实际上, 当改变一个属性, 动画执行时间取决于当前事务的设置, 动画类型取决于图层的行为. 事务是Core Animation用来包含一系列属性动画集合的机制, 任何用指定事务去改变可以做动画的图层的属性都不会立刻发生改变, 而是当事务提交的时候, 开始一个动画过度到新的值. 事务是通过CATransaction类来管理的, 这个类管理了一叠不能访问的事务, 没有属性和实例方法, 并且不能alloc, init创建它, 但是可以用+begin, +commit分别来入栈和出栈. 任何可以做动画的图层属性都会被添加到栈顶的事务, 可以通过 +setAnimationDuration: 设置当前事务的动画时间, 或者 +animationDuration 来获取值. Core