macos - 添加到父 View 时,以编程方式创建的 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
    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

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

关于macos - 添加到父 View 时,以编程方式创建的 NSView 不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708777/

相关文章:

ios - 快速自定义右转

ios - 快速转换为可选值

objective-c - cocoa 框架导入: is it necessary in headers if it's in your pch?

objective-c - 从 NSImages 的 NSArray 制作视频

cocoa - 如何使用 NSTableCellPopup 而不显示边框?

cocoa - Mac OSX 全屏应用程序问题

c - 如何在 1990 年的 const 定义中添加 2 个整数?

macos - CAN 所需的原始套接字无法在 MacOS 下工作 - 套接字 : Address family not supported by protocol

javascript - execCommand ('copy' ) 在 OS X 上的 Chrome 上失败

ios - 如何在 Swift 中更改按钮标题的颜色