添加到父视图时,以编程方式创建的NSView不会出现

时间:2015-07-29 18:50:20

标签: macos swift cocoa nsview

我的ViewController中有以下代码

@IBAction func showView(sender: AnyObject) {
    show()
}

func show() {

    let viewHeight: CGFloat = self.view.frame.height
    let viewWidth: CGFloat = self.view.frame.width
    let posX: CGFloat = self.view.frame.origin.x
    let posY: CGFloat = self.view.frame.origin.y
    let viewFrame: CGRect = CGRectMake(posX, posY, viewWidth, viewHeight)

    let view: NSView = NSView(frame: viewFrame)
    view.layer?.backgroundColor = NSColor.redColor().CGColor

    self.view.addSubview(view)

}

我不明白为什么单击showView按钮时NSView没有出现?作为一个完整性检查,我尝试将调用(​​以及稍后的代码)移动到viewDidLoad方法,再次无济于事。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

问题是你从未说过

view.wantsLayer = true

因此,您的视图没有图层,并且对图层应用背景颜色无效,因为(正如我刚才所说)您的视图没有图层。所以视图就在那里,但你不能看到它;它是透明的,就像隐形人一样。