CALayer在UIScrollView中滚动到屏幕外时会失去光栅化。

5
我有一些不错的自定义UIView,使用CALayers进行一些相当复杂的遮罩和透明度。我花了一些时间才弄清楚如何使其顺畅运行,但我发现通过将相关对象包装在容器UIView中,并将容器的layer.shouldRasterize设置为YES,而将所有包含视图的属性设置为NO,无论您的混合有多么复杂,它都会非常顺畅地运行。
基本上是这样的:
UIScrollView
Container View(layer.shouldRasterize = YES)
- child(layer.shouldRasterize = NO) - childOfChild(layer.shouldRasterize = NO) - child(layer.shouldRasterize = NO) - child(layer.shouldRasterize = NO)
基本上,当它被光栅化时,容器最终变成一个大的块状图像,从而最小化必须执行的光栅化量。然而,这给我带来了一个新问题。如果我有几个容器在UIScrollView中,只要其中一个容器被滚动到屏幕外面,它就会被标记为“红色”在CoreAnimation分析器中,因此必须在它再次滚回屏幕上时重新渲染。这会导致短暂的卡顿。我不明白为什么容器的图层必须再次光栅化。有人能解释一下或提供解决方法吗?谢谢。
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接