I am migrating NSView to Swift and I need to use Quartz CGContextAddPath.
import Cocoa class MYView: NSView { init(frame: NSRect) { super.init(frame: frame) } override func drawRect(dirtyRect: NSRect) { super.drawRect(dirtyRect) NSColor .redColor() .set() NSRectFill(self.bounds) var p :CGMutablePathRef = CGPathCreateMutable() var ctx = NSGraphicsContext.currentContext().graphicsPort() CGContextAddPath(ctx, p)
How do you understand this error message?
Cannot convert the expression type 'Void' to type 'CGContext!'
Swift Signature for CGContextAddPath:
func CGContextAddPath(context: CGContext!, path: CGPath!)
What is my mistake?
When I use this:
let context = UnsafePointer<CGContext>(ctx).memory
I now have a runtime error:
Jun 3 15:57:13 xxx.x SwiftTest[57092] <Error>: CGContextAddPath: invalid context 0x7fff73bd0060. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
Here is the code I'm using now:
import Cocoa class MYView: NSView { init(frame: NSRect) { super.init(frame: frame) } override func drawRect(dirtyRect: NSRect) { super.drawRect(dirtyRect) var p :CGMutablePathRef = CGPathCreateMutableCopy( CGPathCreateWithRoundedRect(self.bounds, 10, 10, nil)) var ctx = NSGraphicsContext.currentContext().graphicsPort() let context = UnsafePointer<CGContext>(ctx).memory CGContextAddPath(context, p)
swift
user3585425
source share