1

尽管这两个 API 位于堆栈的不同级别,但 CALayer 的 shouldRasterize 和 UIView 的 drawRect: 都实现了相同的目标 - 渲染位图并缓存它以供将来重用。在这两种情况下,如果视图/层需要重绘,缓存的版本就会失效。我认为唯一的区别是位图是如何绘制的。drawRect: 是使用 CPU 完成的,而 CALayer 的 shouldRasterize 是由 Core Animation 选择使用的任何东西完成的,可能是 GPU。

人们可以评论这两个 API 之间的任何其他区别吗?

4

1 回答 1

1

shouldRasterize将绘制的图层及其所有子图层缓存到单个位图上下文中。drawRect只是为单个图层提供位图内容。

请注意,shouldRasterize图层上的设置不会影响图层的绘制方式;它会影响绘制这些像素发生的情况。您可以单独或一起使用这些选项;它们提供不同的功能。

于 2013-07-18T18:39:10.920 回答