2013-07-18 60 views
1

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

人们可以评论两个API之间的任何其他差异吗?

+4

这里有问题吗? :) – Erik

回答

1

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

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