установки:
Xcode 6.1
OS X 10.9.5
Swift Mac целевого применения документа на основеSwift на OS X: Как получить доступ к текущему CGContext для втягивания - [NSView DrawRect:]
Вопрос:
Я использую Swift сделать какао 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.
OP здесь. Сразу после публикации этого вопроса я понял, что '- [NSGraphicsContext CGContext]' является API 10.10. И, как я уже сказал, я развиваюсь на 10.9 (хотя моя цель использует 10.10 Base SDK). Итак, в этом проблема. В основном этот вопрос глупо. Это буквально первая строка кода Swift, которую я написал, поэтому я все еще нащупываю, и я только предположил, что я делаю что-то неправильно синтаксически. –