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

标签 swift macos cocoa nsview

我以前是为 iOS 开发的,我不明白为什么我不能轻易地改变主视图中 NSView 的背景颜色。

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

我已经为我的 View Controller 创建了 3 个导出:

@IBOutlet weak var topView: NSView!
@IBOutlet weak var leftView: NSView!
@IBOutlet weak var rightView: NSView!

3 views in IB

之后,我试图设置这些 View 的背景,但无法执行此操作。运行应用程序时我没有看到任何颜色变化。

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

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
    }

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

no background color on views

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

最佳答案

对于您的 subview ,您应该将wantsLayer 设置为true,而不是您的父 View 。

self.topView.wantsLayer = true
self.rightView.wantsLayer = true
self.leftView.wantsLayer = true

关于swift - 如何使用 Swift 在 Cocoa App 中设置 NSView 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46094202/

相关文章:

swift - dispatch_group_notify block 抛出的 "Realm accessed from incorrect thread"异常

ios - Swift 项目中缺少所需的架构 x86_64 错误?

arrays - 从 UIImage 数组获取值并转换为字符串

cocoa - 视网膜显示屏上的 NSCursor 图像

objective-c - NSTextField - *textField 内的操作

ios - 多个应用程序在后台运行时的内存警告

macos - mac osx中的Nginx重新加载错误

macos - 在 Mac OSX 上绘制 OpenGL 顶点数组

objective-c - 使用我的 NSManagedObject 子类作为 CoreData 实体的父类(super class)

objective-c - NSTimer 适合每 X 分钟调用一次网络吗?