如何在Swift语言中改变NSView的角半径

moh*_*acs 2 macos cocoa nsview swift

更改NSView的角半径应该是非常直接的但是我收到错误消息"致命错误:无法打开Optional.None".我是否有机会以10.9而不是10.10这样做,这是因为框架差异而发生的?或者代码错了.

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

叫它

func applicationDidFinishLaunching(aNotification: NSNotification?) {

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

}
Run Code Online (Sandbox Code Playgroud)

实际上不仅如此.任何使用self.layer的迭代都会给出相同的结果,backgroundcolor等.

Cez*_*zar 8

那是因为self.layer是一个当前未设置的Optnional值.self.wantsLayer = true之前添加self.layer.cornerRadius,以确保layer存在正确的.

init(frame: NSRect) {
    super.init(frame: frame)
    self.wantsLayer = true
    self.layer.cornerRadius  = cornerRad
}
Run Code Online (Sandbox Code Playgroud)