Macos 添加到父视图时,不会显示以编程方式创建的NSView

Macos 添加到父视图时,不会显示以编程方式创建的NSView,macos,swift,cocoa,nsview,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

我的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
方法,但同样没有效果


我错过了什么?

问题是你从来没有说过

view.wantsLayer = true

因此,您的视图没有图层,而对图层应用背景色没有任何效果,因为(正如我刚才所说)您的视图没有图层。因此,视图在那里,但你看不到它;它是透明的,就像看不见的人一样。

自己解决它。你有一个调试器。调试!高度、宽度、x和y值是否符合预期?视图是否真的有一个图层,或者您的红色失败了(这样您就可以得到一个看不见的清晰视图)?您说我应该自己调试是完全正确的。我这样做是为了宽度/高度和位置。。。从来没有为卡拉耶做过。现在我知道了。谢谢你的及时回复!分配到一个可选的展开的可选(
view.layer?
)中的乐趣在于不会崩溃。缺点是你不知道是否发生了什么事!:)有办法找到答案,但我们不能做任何假设……我完全明白!我愚蠢地假设NSView默认使用CALayer!再次感谢您的投入。下次类似的事情发生时,我将浏览文档并进行适当的调试。