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

时间:2014-06-04 13:35:54

标签: 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)
    }
}

修改

中调用它
func applicationDidFinishLaunching(aNotification: NSNotification?) {

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

}

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

1 个答案:

答案 0 :(得分: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
}