我有一个自定义视图,我想在其中显示带有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内容才会被绘制到初始窗口(也是在委托方法中完成的。
我的问题是:
答案 0 :(得分:0)
我理解了这个问题......正如我认为问题是两个窗口共享相同的graphicsContext,因为currentContext是:
“当前线程的当前图形上下文。”
我只是解决了这个问题,将CALayer绘图函数调用放在它的容器NSView的drawRect:方法中,因为drawRect:负责在它的视图中独占绘图,并且可能已经以某种方式处理了GraphicsContext的东西。