Setup:
Xcode 6.1
OS X 10.9.5
Swift Mac tài liệu dựa trên mục tiêu ứng dụngSwift trên OS X: Làm thế nào để truy cập CGContext hiện để vẽ trong - [NSView drawRect:]
Câu hỏi:
tôi đang sử dụng Swift để thực hiện một ứng dụng Cocoa Mac (KHÔNG iOS!). Tôi có một lớp con tùy chỉnh NSView
. Tôi muốn ghi đè -drawRect:
và truy cập CGContext
hiện tại để thực hiện một số bản vẽ bằng API CoreGraphics.
Tuy nhiên, dường như tôi không thể truy cập vào số CGContext
hiện tại trong Swift (điều tôi đã thực hiện hàng trăm lần trong ObjC). Dưới đây là mã của tôi:
import Cocoa
class Canvas: NSView {
override func drawRect(dirtyRect: CGRect) {
if let ctx: CGContext! = NSGraphicsContext.currentContext()?.CGContext {
// do drawing
}
}
}
Khi tôi chạy, tôi nhận được một tai nạn ngay trên dòng đầu tiên thực hiện drawRect
tôi:
-[NSWindowGraphicsContext CGContext]: unrecognized selector sent to instance 0x60800005e840
Tôi đang làm gì sai? Làm cách nào để tìm nạp CGContext
hiện tại để vẽ trong Swift?
LƯU Ý:
Tôi chắc chắn muốn sử dụng API CoreGraphics. Trừ khi sử dụng API CoreGraphics trong Swift là hoàn toàn không thể, vui lòng không trả lời với các đề xuất về cách sử dụng API vẽ AppKit thay thế (tôi không quan tâm nếu chúng dễ dàng hơn). Tôi muốn biết cách sử dụng CoreGraphics từ Swift trên OS X.
OP đây. Ngay lập tức sau khi đăng câu hỏi này tôi nhận ra rằng '- [NSGraphicsContext CGContext]' là một API 10.10. Và như tôi đã nói, tôi đang phát triển trên 10.9 (mặc dù mục tiêu của tôi là sử dụng 10.10 Base SDK). Vì vậy, đó là vấn đề. Câu hỏi này là câm, về cơ bản. Đây thực sự là dòng đầu tiên của mã Swift tôi đã viết, vì vậy tôi vẫn đang dò dẫm xung quanh, và tôi đã giả định rằng tôi đã làm sai điều gì đó về cú pháp. –