5

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

例如,当我想将多个动画(即:CABasicAnimations 等)组合在一起同时发生时,我首先想到的是CAAnimationGroup,当我想看到一个图层从一种状态变为另一种状态(即:出现、滑入等)时,我想到了CATransition. 但同时CATransaction意味着批量执行动画(WTH?)

CATransactionCATransition似乎是不同的野兽,但我通常在CATransitions里面看到CATransactions?我已经多次阅读这些文档,但从未将它们并排比较以及它们应该用于何时/什么。

如果有人能指出他们的关系/用途是什么,那就太好了:)

4

1 回答 1

15

CATransaction确实是不同的CATransition野兽......

您的理解中缺少的部分似乎是CATransaction; 一旦你明白了,那么也许所有的部分都会自行到位。

CATransaction每次播放 Core 动画时都会创建A。

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

来源

发生的情况是,如果您没有明确指定一个,则会CATransaction为您创建一个隐式。

您可以创建显式事务(通过[CATransaction begin/commit])来调整动画的多个参数,例如是否应使用默认动画、它们的时长等。这些都在CATransaction参考中进行了描述。

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

因此,恢复一切,CATransaction 是运行核心动画动画的“大伞”,无论它是一个CABasicAnimation、一个CATransition或组动画。它允许您设置一些影响动画/过渡发生方式的一般参数,如果您不提供,则使用默认(隐式)参数。

希望这可以帮助。

于 2012-12-26T15:55:01.653 回答