【发布时间】:2015-05-23 06:51:49
【问题描述】:
设置:
Xcode 6.1
OS X 10.9.5
Swift Mac 基于文档的应用程序目标
问题:
我正在使用 Swift 制作 Cocoa Mac 应用程序(不是 iOS!)。我有一个自定义的NSView 子类。我想覆盖-drawRect:,并访问当前的CGContext 以使用CoreGraphics API 进行一些绘图。
但是,我似乎无法在 Swift 中访问当前的 CGContext(我在 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。除非在 Swift 中使用 CoreGraphics API 是完全不可能的,否则请不要回复有关如何使用 AppKit 绘图 API 的建议(我不在乎它们是否更容易)。我想知道如何在 OS X 上使用 Swift 的 CoreGraphics。
【问题讨论】:
-
在这里操作。发布此问题后,我立即意识到
-[NSGraphicsContext CGContext]是 10.10 API。正如我所说,我正在开发 10.9(即使我的目标是使用 10.10 Base SDK)。所以,这就是问题所在。这个问题基本上是愚蠢的。这实际上是我编写的第一行 Swift 代码,所以我还在摸索,我只是假设我在语法上做错了什么。
标签: xcode macos cocoa swift cgcontext