CALayer -drawInContext:和-renderInContext之间的区别是什么?

时间:2010-03-30 08:17:44

标签: iphone core-animation

CALayer -drawInContext:和-renderInContext之间有什么区别:?

1 个答案:

答案 0 :(得分:26)

当提供自定义的Quartz绘制内容以在CALayer中显示时,您可以覆盖-drawInContext:并在那里进行自定义绘图。对于UIView或NSView,这类似于-drawRect:。或者,您可以将另一个类设置为CALayer的委托,并实现-drawLayer:inContext:以向标准CALayer提供自定义内容。

您不会覆盖-renderInContext:,而是可以在图层上调用它以将其及其所有子图层渲染​​到特定的Core Graphics上下文中。请注意,这不会呈现某些类型的图层(如具有OpenGL内容的图层)。它也不会像渲染到PDF上下文时那样表现,其中图层将以位图矩形而不是纯矢量元素的形式出现。要解决此问题,您可能需要查看Core Plot framework's CPTLayer implementation,我们绕过正常的渲染过程,以保留从CALayer子类生成的PDF中的向量。