【发布时间】:2012-03-07 10:15:48
【问题描述】:
我有一些不错的自定义 UIView,它们使用 CALayers 制作一些相当精细的蒙版和透明胶片。我花了一段时间才弄清楚如何让它顺利运行,但我发现通过将相关对象包装在容器 UIView 中,并将容器的 layer.shouldRasterize 设置为 YES,但将所有包含视图的属性设置为 NO ,无论你的混合多么精细,它都会像黄油般顺滑。
基本上是这样的:
UIScrollView
容器视图(layer.shouldRasterize = YES)
- 孩子(layer.shouldRasterize = NO)
- childOfChild (layer.shouldRasterize = NO)
- 孩子(layer.shouldRasterize = NO)
- 孩子(layer.shouldRasterize = NO)
容器...
容器...(等等)
基本上,容器在栅格化时最终会形成一个大块图像,从而最大限度地减少必须完成的栅格化数量。然而,这给我带来了一个新的问题。如果我在 UIScrollView 中有多个容器,一旦其中一个容器滚动到屏幕外,它就会在 CoreAnimation 分析器中被标记为“红色”,因此当它滚动回屏幕时必须再次渲染。这会导致短暂的口吃。我不明白为什么容器的图层必须重新光栅化。任何人都可以解释这一点或提供解决方法吗?谢谢。
【问题讨论】:
标签: ios uiscrollview calayer