Swift + NSViewController 背景颜色 (Mac App)

Posted

技术标签:

【中文标题】Swift + NSViewController 背景颜色 (Mac App)【英文标题】:Swift + NSViewController background color (Mac App) 【发布时间】:2014-12-20 14:49:32 【问题描述】:

我正在尝试更改视图的背景颜色。 View Controller 类是NSViewController 类型。

如何做到这一点?在 ios UIKit (UIViewController) 中有 self.view.backgroundColor,但 NSViewController 没有。

第二个问题是如何更改应用程序标题栏的颜色?我认为背景颜色对此没有影响。

Mac 应用程序,Swift 语言。 XCode 6.1。

【问题讨论】:

【参考方案1】:

我设法更改了主视图的背景颜色。 NSViewController 确实没有 backgroundColor 属性,所以我使用了属于 NSViewController 的 NSView 的 layer 属性。这是代码。

class ViewController: NSViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        self.view.wantsLayer = true

    

    override var representedObject: AnyObject? 
        didSet 
        // Update the view, if already loaded.
        
    

    override func awakeFromNib() 
        if self.view.layer != nil 
            let color : CGColorRef = CGColorCreateGenericRGB(1.0, 0, 0, 1.0)
            self.view.layer?.backgroundColor = color
        

    

它将用红色背景初始化视图控制器。

对于标题栏颜色,我创建了 NSWindowController 并将其从情节提要分配给主窗口控制器。这是代码。

class MainWindow: NSWindowController 

    override func windowDidLoad() 
        super.windowDidLoad()

        super.window?.backgroundColor = NSColor(calibratedRed: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)
    


我希望这会有所帮助。

【讨论】:

天哪,我的眼睛O_O【参考方案2】:

小心:调用 setLayer: 或 setWantsLayer: 会以非常有创意的方式破坏您的应用程序中可能拥有的任何 WebView! (即使在不同的窗口中......)

请在此处查看此答案Best way to change the background color for an NSView。

【讨论】:

以上是关于Swift + NSViewController 背景颜色 (Mac App)的主要内容,如果未能解决你的问题,请参考以下文章

Swift:在Container View / NSView中切换NSViewController

在 Cocoa App Swift [Mac OS] 中显示在 containerView 内的 NSViewController 不会与 Container 的边界对齐

使用数据在 2 个不同的 NSViewController 之间切换

swift算法手记-5

swift手记-3

Swift 2 MKMapViewDelegate rendererForOverlay 可选性