在drawRect之外获取NSView的CGContextRef?

Mal*_*eev 6 macos graphics cocoa core-graphics nsview

我需要获取NSView对象的CGContextRef.如果我知道如何,情况就不会那么糟糕.

在Carbon这个事情是这样做的:

CGContextRef cgref = (libvlc_drawable_t)GetWindowPort(HIViewGetWindow((OpaqueControlRef*)hiViewRef));
Run Code Online (Sandbox Code Playgroud)

显然,它可以通过继承NSView(或它的子类)并在它的drawRect中捕获它来完成,但这太难看了.

你的想法?

IlD*_*Dan 9

我从来没有用它,但它认为这是你的方式:

[myView lockFocus];
imageContext = (CGContextRef)[[NSGraphicsContext currentContext]
                                     graphicsPort];
... 
[myView unlockFocus];
Run Code Online (Sandbox Code Playgroud)

另外看看NSView的lockFocusIfCanDraw