16.1.3 CATransaction
2025年09月26日
16.1.3 CATransaction
CATransaction是一种机制,用于将多个分组的图层树操作批处理到渲染树上面的原子更新。首先,我们需要有“事务”的概念。所谓事务,是指执行一个单元任务,单元任务可能包含多个子任务,当所有任务全部完成代表这个事务的完成。在Core Animation中,对图层树的修改要求必须是事务的一部分。
Core Animation支持两种类型的事务:隐式事务和显式事务。当没有活动事务的线程修改图层树时,会自动创建隐式事务,并在线程的runloop的下一次迭代时自动提交。当应用程序在修改图层树之前向CATransaction类发送begin()消息,然后发送commit()消息时,会产生显式事务。
CATransaction允许我们直接修改图层中的动画属性。我们可以自定义持续时间、计时方法以及是否在更改属性时触发动画,并提供回调函数以便在完成事务组中的所有动画时通知我们。
下面是一个使用事务去实现动画的示例,代码如下:
本例中提交了两个动画,第一个是透明度变为0,第二个是大小变为原来的三倍;此外还设置了动画结束的回调,结束时将图层从图层树中移除。