在Iphone开发中,我想在图层中绘制上下文。 然后问题是:
传递给drawLayer的上下文究竟是什么:inContext:?它是图层内容的上下文还是UIview的上下文?
如果这是UIView的上下文,UIView是什么?
提前致谢。
答案 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的情况下,视图本身就是委托。