Swift für OS X: Wie Sie Zugang zu den aktuellen CGContext zum zeichnen von in -[NSView drawRect:]

Setup:

Xcode 6.1

OS X 10.9.5

Swift Mac Dokument-basierte Anwendung Ziel

Frage:

Ich bin mit Swift zu machen, einen Kakao Mac app (NICHT iOS!). Ich habe eine benutzerdefinierte NSView Unterklasse. Ich möchte überschreiben -drawRect:und Zugriff auf die aktuelle CGContext zu tun, einige Zeichnung mit der CoreGraphics-APIs.

Aber ich kann nicht scheinen, um Zugang zu den aktuellen CGContext Swift (etwas, das ich getan habe, Hunderte Male in ObjC). Hier ist mein code:

import Cocoa

class Canvas: NSView {
    override func drawRect(dirtyRect: CGRect) {
        if let ctx: CGContext! = NSGraphicsContext.currentContext()?.CGContext {
            //do drawing
        }
    }
}

Wenn ich Laufe, bekomme ich einen sofortigen crash in der ersten Zeile meiner drawRect Umsetzung:

-[NSWindowGraphicsContext CGContext]: unrecognized selector sent to instance 0x60800005e840

Was mache ich falsch? Wie kann ich das abrufen der aktuellen CGContext für Zeichnung in Swift?

HINWEIS:

Ich möchte auf jeden Fall verwenden Sie das CoreGraphics-API. Es sei denn, mit der CoreGraphics-API in Swift ist ganz unmöglich, bitte nicht Antworten mit Empfehlungen, wie AppKit der Zeichnungs-API statt (I don ' T care, wenn Sie einfacher sind). Ich möchte wissen, wie CoreGraphics von Swift auf OS X.

InformationsquelleAutor der Frage Todd Ditchendorf | 2015-03-19

Schreibe einen Kommentar