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 的边界对齐