mohacs mohacs - 5 months ago 20
Swift Question

How to change Corner Radius of NSView in Swift Language

changing corner radius of NSView should be pretty straight forward however i am getting error message "fatal error: Can't unwrap Optional.None". is there a chance i am doing this with 10.9 not 10.10 and this is happening due framework differences? or the code is wrong.

class aRoundView: NSView {

let cornerRad = 5.0

init(frame: NSRect) {
super.init(frame: frame)

self.layer.cornerRadius = cornerRad
}

override func drawRect(dirtyRect: NSRect)
{
super.drawRect(dirtyRect)
NSColor.redColor().setFill()
NSRectFill(dirtyRect)
}
}


EDIT



calling it in

func applicationDidFinishLaunching(aNotification: NSNotification?) {

let aView = mainViewTest(frame: NSMakeRect(0, 0, 100, 100))
self.window.contentView.addSubview(aView)

}


actually it is not just that. any iteration with self.layer gives same result, backgroundcolor etc.

Answer

That is because self.layer is an Optnional value, which is currently not set. Add self.wantsLayer = true before self.layer.cornerRadius, to make sure a proper layer exists.

init(frame: NSRect) {
    super.init(frame: frame)
    self.wantsLayer = true
    self.layer.cornerRadius  = cornerRad
}