即使两个API位于堆栈的不同级别,CALayer的shouldRasterize和UIView的drawRect:实现相同的目标 - 渲染位图并对其进行缓存以供将来重用。在这两种情况下,如果视图/图层需要重绘,则缓存的版本将失效。我认为唯一的区别是如何绘制位图。 drawRect:使用CPU完成,而CALayer的shouldRasterize由Core Animation选择使用的任何东西完成,可能是GPU。
人们可以评论这两个API之间的任何其他差异吗?
答案 0 :(得分:1)
shouldRasterize
将绘制的图层及其所有子图层缓存到单个位图上下文中。 drawRect
只为单个图层提供位图内容。
请注意,在图层上设置shouldRasterize
不会影响图层的绘制方式;它会影响在绘制这些像素后发生的事情。您可以单独或一起使用这些选项;它们提供不同的功能。