Swift + NSViewController background color (Mac App)

时间秒杀一切 提交于 2019-12-20 17:24:29

问题


I am trying to change the background color of my View. The View Controller class is NSViewController type.

How this can be done? In iOS UIKit (UIViewController) there is self.view.backgroundColor, but NSViewController doesn't have that.

And second problem is how can I change the color of the applications Title Bar? I think the background color doesn't affect to that.

Mac application, language Swift. XCode 6.1.


回答1:


I managed to change background color of main view. NSViewController does not have backgroundColor property indeed, so I used the layer property of NSView that belongs to NSViewController. Here is the code.

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
        }

    }
}

It will initialize the view controller with red background.

For Title Bar color, I created NSWindowController and assinged it to main window controller from storyboard. Here is the code.

class MainWindow: NSWindowController {

    override func windowDidLoad() {
        super.windowDidLoad()

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

}

I hope this will help.




回答2:


Careful: calling setLayer: or setWantsLayer: breaks any WebViews you might have in your application in very creative ways! (Even in different windows...)

Please see this answer here Best way to change the background color for an NSView.



来源:https://stackoverflow.com/questions/26553444/swift-nsviewcontroller-background-color-mac-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!