传递给drawLayer的上下文是什么:inContext:?

时间:2010-02-26 10:03:47

标签: iphone calayer

在Iphone开发中,我想在图层中绘制上下文。 然后问题是:

传递给drawLayer的上下文究竟是什么:inContext:?它是图层内容的上下文还是UIview的上下文?

如果这是UIView的上下文,UIView是什么?

提前致谢。

2 个答案:

答案 0 :(得分:3)

传入的上下文属于该委托方法也返回的CALayer。通常,这是一个显示上下文,但如果使用-renderInContext:手动绘制图层,它也可以是图像或PDF上下文。

CALayers可以单独存在,也可以用作UIView的支持。所有UIViews都在它们后面有一层,它处理该视图内容的实际显示。在视图中绘制实际上是在其图层上绘制的,同样地,绘制一个支持UIView的CALayer中的绘图将显示为绘制到视图。

正如我所说,您可以创建作为单独实体存在的CALayers,并将它们添加到现有图层作为子图层进行显示。在某些时候,需要有一个UIView,在其支持层中托管所有这些子层,以便在iPhone的屏幕上看到这些层。

请注意,根据UIView class reference

  

因为视图是图层的   代表,你永远不应该设置   查看另一个CALayer的代表   宾语。此外,你永远不应该   更改此图层的委托。

这意味着对于UIView的图层,几乎在所有情况下都会处理UIView中的委托方法,因此传入该方法的图层将是视图的图层。子图层可以将任何内容作为其委托,因为它们不附加到特定视图。

答案 1 :(得分:1)

这里有一些信息:Providing Layer Content

  

如果必须绘制图层的内容而不是从图像中加载它,则实现drawLayer:inContext:delegate方法。委托传递给需要内容的图层和CGContextRef来绘制内容。

通常是委托对象的上下文。在UIVIew的情况下,视图本身就是委托。