我什么时候应该将layer.shouldRasterize设置为YES

时间:2013-10-16 14:10:34

标签: ios uiview uicollectionview rasterizing

我通过设置视图的图层属性

看到了一些lagyness问题的修复
view.layer.shouldRasterize = YES;

在使用UICollectionView并准备单元格和设置属性时,我发现性能差异很大。

不确定含义是什么。

很高兴得到解释。 谢谢!

1 个答案:

答案 0 :(得分:51)

在WWDC 2012 Polishing Your Interface Rotations视频(需要付费开发者订阅)中,他们讨论了栅格化图层的优势和含义。这个视频是关于一个不同的主题(虽然是一个有趣的主题),但他们确实讨论了光栅化与快照的利弊(从视频开始约8分钟,他们给出了关于UIView之间关系的一些背景知识。层次结构,表示树和渲染树,然后在视频中另外6分钟深入讨论光栅化。

如果你有一个复杂的视图(即重新渲染相对昂贵)你是动画的底线,但是动画视图本身不会改变,底层光栅化可以通过不重新渲染图层来提高性能每时每刻。但它以内存为代价(在内存中保存光栅化图像)。

但是,如果您对图层中的更改进行动画处理,则shouldRasterize会对性能产生负面影响(因为它会为动画的每个帧重新栅格化图层)。

通常情况下,如果设置一组复杂的图层(它们本身没有变化),则可以将shouldRasterize设置为YES,然后执行动画,然后关闭shouldRasterize