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

标签 iphone calayer

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

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

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

提前致谢。

最佳答案

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

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

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

请注意,根据UIView class reference :

Since the view is the layer’s delegate, you should never set the view as a delegate of another CALayer object. Additionally, you should never change the delegate of this layer.

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

关于iphone - 传递给drawLayer的上下文是什么:inContext:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340759/

相关文章:

ios - 正在刷新 iOS 应用收据 : How to determine if user will need to sign in for app store?

ios - swift - 我很笨,我的 subview 不会服从并正确调整自身大小

iPhone SDK : Store Kit: Can I host the downloads on my own server?

ios - CALayer 的内容中心无法快速工作

iphone - 在 iOS 4 中保存 UIView 内容,并使用内部图像的实际大小(即放大内容进行保存)

ios - CALayer drawrect 抗锯齿功能不起作用

iphone - 共享类实例(创建和共享单例)的最佳方式是什么?

ios - 无法从 AVSynchronizedLayer 中删除子层

ios - 子层未按预期隐藏/显示

c# - 我可以使用 NSStream、NSInputStream 和 NSOutputStream 从 C# 应用程序发送和接收数据吗?