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

don*_*ile 27 iphone core-animation

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

Bra*_*son 26

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

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