为什么频繁切换CALayer的隐藏属性会导致图形严重退化?

时间:2019-02-07 11:56:23

标签: ios objective-c core-animation calayer

我正在编写 IOS 应用,其中许多 CALayers (数百个)同时显示在屏幕上。接口更新(速率大约为 50-60Hz )包括从图层层次结构中删除/添加一些 CALayers ,以及更改其他 CALayers的“隐藏”状态。所有更新都是在普通的 CATransaction 下进行的,其中关闭了 ANY 动画。

频繁从层次结构中删除/添加 CALayers 不会导致图形性能出现任何问题。但是 CALayers 的“隐藏”状态的频繁更改会导致FPS降级,因此图形更新将不再平滑且稳定。似乎 GPU 总是很晚才处理更新的屏幕。

有人知道造成这种影响的原因是什么?在官方文档中,没有任何关于隐藏/显示图层的副作用的消息。添加/删除和隐藏/显示图层似乎与使用图层产生类似的结果:隐藏图层时,它根本不被处理,等同于被删除(也许它仍被缓存在GPU中的某个位置)。 ?)。也许有人可以解释或遇到相同的问题?

0 个答案:

没有答案