我已经多次使用这三个类几次。
例如,当我想将几个动画(即:CABasicAnimations等)同时发生时,我首先想到CAAnimationGroup
,当我想看到从一个状态到另一个状态的层更改时(即:出现,幻灯片等)我想到了CATransition
。
但同时CATransaction
意味着批量执行动画(WTH?)
CATransaction
和CATransition
似乎是不同的野兽,但我通常会在CATransitions
内看到CATransactions
?我已经多次阅读过这些文档,但是它们并没有被并排比较,而是什么时候应该用它们。
如果有人可以指出他们的关系/用法是什么,那就太好了。)
答案 0 :(得分:14)
CATransaction
和CATransition
确实是不同的野兽...
您理解中的缺失似乎是CATransaction
;一旦你得到了,那么也许所有的作品都将自行落实到位。
每次进行Core动画时,始终会创建CATransaction
。
对图层的每次修改都是交易的一部分。 CATransaction是核心动画类,负责将多个层树修改批处理到渲染树的原子更新。
(source)
如果您没有明确指定一个,那么会为您创建隐式CATransaction
。
您可以创建一个显式事务(通过[CATransaction begin/commit]
)来调整动画的几个参数,例如是否应该使用默认动画,它们的长度等等。这些都在{{1}中描述参考。
在同时设置多个图层的属性时(例如,在布置多个图层时),暂时禁用图层操作或临时更改生成的隐含动画的持续时间时,显式事务特别有用。
因此,重新开始,CATransaction是运行核心动画动画的“大伞”,它是CATransaction
,CABasicAnimation
或群组动画。它允许您设置一些影响动画/转换发生方式的常规参数,如果您不提供,则使用默认(隐式)参数。
希望这有帮助。