Aun*_*unn 6 core-animation objective-c ios catransaction
我看到很多人用它来禁用隐式动画:
[CATransaction begin];
[CATransaction setDisableActions:YES];
someLayer.backgroundColor = someCGColor;//no animation
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)
但没有CATransaction开始和提交它也有效:
[CATransaction setDisableActions:YES];
someLayer.backgroundColor = someCGColor;//no animation
Run Code Online (Sandbox Code Playgroud)
像这样它也有效:
[CATransaction setDisableActions:YES];
someLayer1.backgroundColor = someCGColor;//no animation
[CATransaction setDisableActions:NO];
someLayer2.backgroundColor = someCGColor2; //have animation
Run Code Online (Sandbox Code Playgroud)
所以问题是,为什么我需要使用CATransaction begin&commit?有什么情况我必须使用它们吗?
谢谢,Aunn.
这与 Core Animation 中的事务块有关。默认情况下,有一个隐式事务块会自动捕获对 CATransaction 的调用。使用 CATransaction 开始/提交创建一个显式事务块,允许您将不同的动画特征应用于动画的不同元素。
理论上,如果需要立即执行某些操作而不是在下一次重绘调用时执行某些操作(例如添加或删除动画),则可能需要显式事务块。如果操作不当,例如在完成任何绘制调用之前启动动画,这会导致问题。
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |