CoreAnimation混淆:CATransaction vs CATransition vs CAAnimationGroup?

时间:2012-12-26 15:41:58

标签: ios macos core-animation catransition catransaction

我已经多次使用这三个类几次。

例如,当我想将几个动画(即:CABasicAnimations等)同时发生时,我首先想到CAAnimationGroup,当我想看到从一个状态到另一个状态的层更改时(即:出现,幻灯片等)我想到了CATransition。 但同时CATransaction意味着批量执行动画(WTH?)

CATransactionCATransition似乎是不同的野兽,但我通常会在CATransitions内看到CATransactions?我已经多次阅读过这些文档,但是它们并没有被并排比较,而是什么时候应该用它们。

如果有人可以指出他们的关系/用法是什么,那就太好了。)

1 个答案:

答案 0 :(得分:14)

CATransactionCATransition确实是不同的野兽...

您理解中的缺失似乎是CATransaction;一旦你得到了,那么也许所有的作品都将自行落实到位。

每次进行Core动画时,始终会创建CATransaction

  

对图层的每次修改都是交易的一部分。 CATransaction是核心动画类,负责将多个层树修改批处理到渲染树的原子更新。

source

如果您没有明确指定一个,那么会为您创建隐式CATransaction

您可以创建一个显式事务(通过[CATransaction begin/commit])来调整动画的几个参数,例如是否应该使用默认动画,它们的长度等等。这些都在{{1}中描述参考。

  

在同时设置多个图层的属性时(例如,在布置多个图层时),暂时禁用图层操作或临时更改生成的隐含动画的持续时间时,显式事务特别有用。

因此,重新开始,CATransaction是运行核心动画动画的“大伞”,它是CATransactionCABasicAnimation或群组动画。它允许您设置一些影响动画/转换发生方式的常规参数,如果您不提供,则使用默认(隐式)参数。

希望这有帮助。