Swift + NSViewController background color (Mac App) Swift + NSViewController background color (Mac App) swift swift

Swift + NSViewController background color (Mac App)


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.


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.