shouldRasterize

2022-07-28  本文已影响0人  Smallwolf_JS

1 减少视图层级
设置一个CALayer的shouldRasterize=YES,相当于提前把一个CALayer光栅化。这个CALayer图层结构就被拍扁了,变成一张位图。
2 缓存得到图像,提高性能
启用shouldRasterize属性会将图层绘制到一个屏幕之外的图像,然后这个图像将会被缓存起来。缓存起来是一个重要的特性,它几乎决定了shouldRasterize的所有应用场景。
如果有很多的子图层或者有复杂的效果应用,开启shouldRasterize就会比重绘所有事务的所有帧划得来得多。但是光栅化原始图像需要时间,而且还会消耗额外的内存。所以需要根据实际情况取舍。
3、shouldRasterize的应用场景
通过上面shouldRasterize的理解,就不难得出shouldRasterize应该如何应用。
4 启用shouldRasterize提升复杂层级视图的性能
由于启用shouldRasterize得到的图像会被缓存起来。这大大减少了GPU的负担。试想在一个table view的cell中,有非常复杂的层级结构。滑动tableview的时候,GPU需要进行大量的合成,这有可能会导致性能问题。我们可以尝试将cell的layer的shouldRasterize打开提升性能。
5 启用shouldRasterize提升动画性能
对一个层级复杂的视图做动画时,也可以启用shouldRasterize避免GPU每帧都重新合成。
6 启用shouldRasterize改善离屏渲染的性能。
仍然是在一个table view的cell中,如果使用了阴影效果,那么会触发离屏渲染:

上一篇下一篇

猜你喜欢

热点阅读