CoreAnimation - 动画启动时不必要的屏幕重绘会造成滞后

时间:2014-05-28 15:42:33

标签: ios performance profiling core-animation

屏幕上有一堆CAReplicatorLayer,其中包含一堆复制的CAShapeLayers。 它们只是被展示出来,它们不会移动,也不应该做任何事情,除了可见之外。

我正在运行动画以在屏幕上移动其他CAShapeLayers。一旦动画开始(第一次),CAReplicatorLayer(及其所有复制)将被重绘。我看到这是由于CoreAnimation分析器带有“闪存更新区域”。

这两件事完全没有关系,虽然CAReplicatorLayer及其所有复制都被重新绘制。

我在这里有一个测试项目,它显示了问题所在。按下两个动画按钮之一以运行动画并观看闪烁的屏幕区域,CoreAnimation探查器处于活动状态。

https://dl.dropboxusercontent.com/u/40859730/AnimationLagTest.zip

有一个非常明显的延迟,但只是第一次运行动画。按下复位时,滞后再次开始。按下重置时,将重新创建用于动画的CAShapeLayers。

我正在使用iPad 3 Retina进行测试,如果你的设备比我更快/更快,你可能需要将CAReplicatorLayer的instanceCount增加到300-1000,以便在启动动画时看到初始延迟

我能做些什么来阻止不必要的重新渲染屏幕区域,显然不需要重新渲染?

0 个答案:

没有答案