Setup:
Xcode 6.1
OS X 10.9.5
Swift Mac dokumentenbasierte Anwendung ZielSwift auf OS X: Wie die aktuelle CGContext zuzugreifen in zum Zeichnen - [NSView drawRect:]
Frage:
I Swift bin mit einem Cocoa Mac app machen (NICHT iOS!). Ich habe eine benutzerdefinierte NSView
Unterklasse. Ich möchte -drawRect:
überschreiben und auf die aktuelle CGContext
zugreifen, um einige Zeichnungen mit den CoreGraphics-APIs zu erstellen.
Allerdings kann ich nicht auf den aktuellen CGContext
in Swift zugreifen (etwas, das ich Hunderte von Male in ObjC getan habe). 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 sofort Absturz in der ersten Zeile meiner drawRect
Umsetzung:
-[NSWindowGraphicsContext CGContext]: unrecognized selector sent to instance 0x60800005e840
Was mache ich falsch? Wie hole ich die aktuelle CGContext
zum Zeichnen in Swift?
HINWEIS:
Ich möchte auf jeden Fall die Core Graphics API verwenden. Wenn die Verwendung der CoreGraphics-API in Swift nicht unmöglich ist, antworten Sie bitte nicht mit Vorschlägen zur Verwendung von AppKit-Zeichnungs-APIs (es ist mir egal, ob sie einfacher sind). Ich möchte wissen, wie Sie CoreGraphics von Swift auf OS X verwenden.
hier OP. Sofort nachdem ich diese Frage gestellt hatte, erkannte ich, dass '- [NSGraphicsContext CGContext]' eine 10.10 API ist. Und wie ich schon sagte, ich entwickle auf 10.9 (obwohl mein Ziel das 10.10 Base SDK verwendet). Also, das ist das Problem. Diese Frage ist im Grunde dumm. Dies ist buchstäblich die erste Zeile des Swift-Codes, den ich geschrieben habe, also tapple ich immer noch herum, und ich hatte gerade angenommen, dass ich syntaktisch etwas falsch mache. –