web-dev-qa-db-ja.com

Swift + NSViewController背景色(Macアプリ)

ビューの背景色を変更しようとしています。 View ControllerクラスはNSViewControllerタイプです。

これはどのように行うことができますか? iOS UIKit(UIViewController)にはself.view.backgroundColorですが、NSViewControllerにはありません。

2番目の問題は、アプリケーションのタイトルバーの色を変更する方法ですか。背景色は影響しないと思います。

Macアプリケーション、言語Swift。 XCode 6.1。

21
Rohirm

メインビューの背景色をなんとか変えました。 NSViewControllerには実際にはbackgroundColorプロパティがないため、NSViewControllerに属するNSViewのレイヤープロパティを使用しました。これがコードです。

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
        }

    }
}

赤い背景でView Controllerを初期化します。

タイトルバーの色については、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)
    }

}

これがお役に立てば幸いです。

54
cyt

注意:setLayer:またはsetWantsLayer:を呼び出すと、アプリケーションにあるWebViewが非常に独創的な方法で中断されます。 (別のウィンドウでも...)

こちらの回答をご覧ください NSViewの背景色を変更する最良の方法

2
JZAU