如何使用 Swift 在 Cocoa App 中设置 NSView 的颜色?

Ade*_*aer 5 macos cocoa nsview swift

我曾经为 iOS 开发,但我不明白为什么我不能NSView在主视图中轻松更改s 的背景颜色。

假设我有一个带有主视图的视图控制器。在此视图中,我添加了 3 个自定义视图,并设置了它们的约束以适合主视图。

我为我的视图控制器创建了 3 个插座:

@IBOutlet weak var topView: NSView!
@IBOutlet weak var leftView: NSView!
@IBOutlet weak var rightView: NSView!
Run Code Online (Sandbox Code Playgroud)

IB 中的 3 个视图

在那之后,我试图设置这些视图的背景,但不能这样做。当我运行应用程序时,我没有看到任何颜色变化。

这是我添加的用于显示自定义视图颜色的代码:

override func viewDidLoad() {
        super.viewDidLoad()

        self.view.wantsLayer = true

        self.topView.layer?.backgroundColor = NSColor.blue.cgColor
        self.rightView.layer?.backgroundColor = NSColor.green.cgColor
        self.leftView.layer?.backgroundColor = NSColor.yellow.cgColor
    }
Run Code Online (Sandbox Code Playgroud)

它什么也没显示(我的视图上没有背景颜色):

视图上没有背景颜色

我不明白为什么这段代码不起作用。为什么设置 an 的颜色如此困难NSView(而在 iOS 开发中却如此简单)?我正在使用 Xcode 8 并使用 Swift 3 编写代码。

Tam*_*gel 4

您应该为您的子视图wantsLayer设置为,而不是为您的超级视图。true

self.topView.wantsLayer = true
self.rightView.wantsLayer = true
self.leftView.wantsLayer = true
Run Code Online (Sandbox Code Playgroud)