首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套CATransaction的行为?

嵌套CATransaction的行为?
EN

Stack Overflow用户
提问于 2016-09-05 03:06:49
回答 1查看 805关注 0票数 0

下面的代码将在backgroundColor之后立即更新commit

代码语言:javascript
复制
[CATransaction begin];
self.view.backgroundColor = [UIColor redColor];
[CATransaction commit];

sleep(5);

但是,对于嵌套的显式CATransactions,只有在外部大多数事务提交时才会进行屏幕更新。

代码语言:javascript
复制
[CATransaction begin];
[CATransaction begin];
self.view.backgroundColor = [UIColor redColor];
[CATransaction commit];
sleep(5);
[CATransaction commit];

这使它变得非常奇怪,因为我们知道runloop将创建一个外部最隐式的每个循环事务。为什么当一个implicit transaction提交时,这个explicit transaction不被视为最外层的事务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 03:15:27

始终存在隐式事务。也可以有一个显式事务。在所有代码运行完之前,隐式事务不会提交。如果您有一个显式事务(begincommit),那么当遇到commit时它会提交。

嵌套显式事务的目的只是允许您为动画的不同部分提供不同的参数(例如持续时间);实际提交直到最外层的commit才会发生。读取医生们

只有在提交了对最外层事务的更改之后,核心动画才会开始相关的动画

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39323399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档