Настройка:
Xcode 6.1
OS X 10.9.5
Swift Mac Цель приложения на основе документов
Вопрос:
Я использую Swift, чтобы создать приложение Cocoa Mac (НЕ iOS!). У меня есть пользовательский подкласс NSView
. Я хотел бы переопределить -drawRect:
и получить доступ к текущему CGContext
, чтобы сделать некоторый чертеж, используя API-интерфейсы CoreGraphics.
Однако я не могу получить доступ к текущему CGContext
в Swift (что я делал сотни раз в ObjC). Здесь мой код:
import Cocoa
class Canvas: NSView {
override func drawRect(dirtyRect: CGRect) {
if let ctx: CGContext! = NSGraphicsContext.currentContext()?.CGContext {
// do drawing
}
}
}
Когда я запустил, я сразу же попал в первую строку моей реализации drawRect
:
-[NSWindowGraphicsContext CGContext]: unrecognized selector sent to instance 0x60800005e840
Что я делаю неправильно? Как получить текущий CGContext
для рисования в Swift?
Примечание:
Я определенно хочу использовать CoreGraphics API. Если использование API CoreGraphics в Swift полностью невозможно, пожалуйста, не отвечайте на предложения о том, как использовать API-интерфейсы API AppKit (мне все равно, проще ли они). Я хочу знать, как использовать CoreGraphics от Swift на OS X.