gpt4 book ai didi

ios - CoreAnimation 困惑 : CATransaction vs CATransition vs CAAnimationGroup?

转载 作者:可可西里 更新时间:2023-11-01 05:02:53 31 4
gpt4 key购买 nike

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

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

CATransactionCATransition 似乎是不同的野兽,但我通常在 CATransactions 中看到 CATransitions?我已经多次阅读文档,但从未将它们并排比较,也没有比较它们应该用于什么时候/什么。

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

最佳答案

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

看来您的理解中缺少的部分是关于CATransaction;一旦你明白了这一点,那么也许所有的部分都会自己落到位。

CATransaction 总是在您每次执行核心动画时创建。

Every modification to a layer is part of a transaction. CATransaction is the Core Animation class responsible for batching multiple layer-tree modifications into atomic updates to the render tree.

( source )

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

你可以创建一个显式事务(通过[CATransaction begin/commit])来调整动画的几个参数,比如是否应该使用默认动画,它们有多长等。那些在 CATransaction 引用中都有描述。

Explicit transactions are particularly useful when setting the properties of many layers at the same time (for example, while laying out multiple layers), temporarily disabling layer actions, or temporarily changing the duration of resulting implied animations.

所以,总而言之,CATransaction 是运行核心动画动画的“大伞”,无论它是 CABasicAnimationCATransition 还是组动画。它允许您设置一些影响动画/过渡发生方式的通用参数,如果您不提供,则使用默认(隐式)参数。

希望这对您有所帮助。

关于ios - CoreAnimation 困惑 : CATransaction vs CATransition vs CAAnimationGroup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042755/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com