【发布时间】:2011-01-15 16:39:18
【问题描述】:
我在它的 -drawInContext: 方法中有一个包含一些复杂绘图代码的层。我试图尽量减少我需要做的绘图量,所以我使用 -setNeedsDisplayInRect: 来更新更改的部分。这工作非常出色。但是,当图形系统更新我的图层时,它会使用交叉淡入淡出从旧图像过渡到新图像。我希望它立即切换。
我尝试使用 CATransaction 关闭操作并将持续时间设置为零,但均无效。这是我正在使用的代码:
[CATransaction begin];
[CATransaction setDisableActions: YES];
[self setNeedsDisplayInRect: rect];
[CATransaction commit];
我应该在 CATransaction 上使用不同的方法吗(我也尝试了 -setValue:forKey: 与 kCATransactionDisableActions,结果相同)。
【问题讨论】:
-
你可以在下一个运行循环中做到这一点:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ }); -
我在下面找到了许多适合我的答案。 Apple 的 Changing a Layer’s Default Behavior 文档也很有帮助,该文档详细描述了隐式操作决策过程。
-
这是一个重复的问题:stackoverflow.com/a/54656717/5067402
标签: iphone ios core-animation calayer