我有一个自定义视图,我想在其中显示带有 PDF 内容的 CALayer。为此,我实现了一个委托 NSObject 子类,如Using CALayer Delegate的第一个答案所示。
因为我有一个基于文档的应用程序,所以我有一个可以打开文档的起始窗口。从自定义文档中我 initWithWindowNibName: 来自 makeWindowControllers 方法的自定义 windowController。在 windowController 中,在 windowDidLoad 中,我设置了一个自定义 NSView 的变量值并初始化了 CALayer。在同一个地方,我运行这行代码来绘制内容:
[[[PDFViewLayerDelegate alloc] initWithUrl:url andPageIndex:currentPageIndex] drawLayer:layer1 inContext:[[NSGraphicsContext currentContext] graphicsPort]];
发生的情况是:在运行该行之前,CALayer 的背景设置为绿色并且只会出现在正确的窗口中,现在 PDF 内容仅在两个图层都填充为白色时才被绘制到初始窗口(这也完成了在委托方法中)。
我的问题是:
- 为什么我的 CALayer 被绘制到不属于创建它的自定义 NSView 子类的视图?而且在不同的窗口?
- 每个窗口中的两个视图是否共享相同的 graphicsContext?可能是这个原因。。