4

在 Iphone 开发中,我想在图层中绘制上下文。那么问题来了:

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

如果这是 UIView 的上下文,它是哪个 UIView?

提前致谢。

4

2 回答 2

3

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

CALayer 可以单独存在,也可以用作 UIView 的支持。所有 UIView 背后都有一个层,用于处理该视图内容的实际显示。在视图中绘制实际上是在其层上绘制,同样,在支持 UIView 的 CALayer 中绘制似乎会绘制到视图中。

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

请注意,根据UIView 类参考

由于视图是图层的委托,因此您永远不应将视图设置为另一个 CALayer 对象的委托。此外,您永远不应更改此层的委托。

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

于 2010-02-26T16:07:15.793 回答
1

这里有一些信息:提供图层内容

如果您必须绘制层的内容而不是从图像中加载它,您可以实现 drawLayer:inContext: 委托方法。委托传递了需要内容的层和用于绘制内容的 CGContextRef。

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

于 2010-02-26T10:50:49.787 回答