Цвет фона Swift + NSViewController (приложение для Mac)

Я пытаюсь изменить цвет фона моего представления. Класс View Controller имеет тип NSViewController.

Как это можно сделать? В iOS UIKit (UIViewController) есть self.view.backgroundColor, но NSViewController не имеет этого.

И вторая проблема заключается в том, как изменить цвет панели заголовков приложений? Я думаю, что цвет фона не влияет на это.

Приложение Mac, язык Swift. XCode 6.1.

Ответы

Ответ 1

Мне удалось изменить цвет фона основного вида. NSViewController действительно не имеет свойства backgroundColor, поэтому я использовал свойство layer NSView, которое принадлежит NSViewController. Вот код.

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)
    }

}

Надеюсь, это поможет.

Ответ 2

Осторожно: вызов setLayer: или setWantsLayer: разбивает любые WebView, которые могут быть у вас в приложении, очень творчески! (Даже в разных окнах...)

Пожалуйста, см. этот ответ здесь Лучший способ изменить цвет фона для NSView.