基本上我想制作一个简单的窗口,它有一个统一的标题栏和窗口(即纹理)和白色背景,如Xcode关于窗口:
所以我在IB中有一个带纹理的窗口,我通过绑定将它连接到我的app委托。然后我将这行代码添加到app delegate:
[about setBackgroundColor:[NSColor whiteColor]];
对于其他颜色,如红色和蓝色,窗口似乎改变了颜色,但每当我使用[NSColor whiteColor]时,窗口看起来远不如Xcode的窗口那么耀眼:
有趣的是,当窗口处于非活动状态时,我最终获得了Xcode的白色:
这是一个错误吗?或者它应该看起来真的很灰?如何让这个窗口成为“真正的白色”?
答案 0 :(得分:1)
你不需要一个hacky解决方案(至少不再这样做)。
创建一个视图控制器,然后将其作为modal
打开。在视图控制器的子类代码中,添加:
class YourVC: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
//Set the background color to white
self.view.wantsLayer = true
self.view.layer?.backgroundColor = NSColor.white
}
override func viewDidAppear() {
//Customize the window's title bar
let window = self.view.window
window?.styleMask.insert(NSWindowStyleMask.unifiedTitleAndToolbar)
window?.styleMask.insert(NSWindowStyleMask.fullSizeContentView)
window?.styleMask.insert(NSWindowStyleMask.titled)
window?.toolbar?.isVisible = false
window?.titleVisibility = .hidden
window?.titlebarAppearsTransparent = true
}
}
这是在Xcode 8中使用Swift 3。
答案 1 :(得分:0)
我找到了一个教程,使用了一个相当不错的ghetto hack来交换框架视图的drawRect:方法:http://parmanoir.com/Custom_NSThemeFrame
它甚至不需要你继承NSWindow,但我还是这样做,以防我想在另一个窗口或其他东西上使用它。
最终结果:
编辑:我暂时提交了一份反馈助理报告,截至Yosemite DP 7或Xcode 6.1,这个问题似乎已得到解决。设置纹理窗口的背景颜色现在会产生无色的颜色。