屏幕上有一堆CAReplicatorLayer
,其中包含一堆复制的CAShapeLayers
。
它们只是被展示出来,它们不会移动,也不应该做任何事情,除了可见之外。
我正在运行动画以在屏幕上移动其他CAShapeLayers
。一旦动画开始(第一次),CAReplicatorLayer
(及其所有复制)将被重绘。我看到这是由于CoreAnimation
分析器带有“闪存更新区域”。
这两件事完全没有关系,虽然CAReplicatorLayer
及其所有复制都被重新绘制。
我在这里有一个测试项目,它显示了问题所在。按下两个动画按钮之一以运行动画并观看闪烁的屏幕区域,CoreAnimation
探查器处于活动状态。
https://dl.dropboxusercontent.com/u/40859730/AnimationLagTest.zip
有一个非常明显的延迟,但只是第一次运行动画。按下复位时,滞后再次开始。按下重置时,将重新创建用于动画的CAShapeLayers。
我正在使用iPad 3 Retina进行测试,如果你的设备比我更快/更快,你可能需要将CAReplicatorLayer的instanceCount增加到300-1000,以便在启动动画时看到初始延迟
我能做些什么来阻止不必要的重新渲染屏幕区域,显然不需要重新渲染?