我正在使用Xcode 7.2.1和Swift 2来开发OS X应用程序。我希望应用程序充满色彩。我怎么做上面的示例图片?
我这样做是为了摆脱标题栏:
override func viewDidAppear() {
super.viewDidAppear()
self.view.wantsLayer = true
self.view.window?.titlebarAppearsTransparent = true
self.view.window?.movableByWindowBackground = true
self.view.window?.titleVisibility = NSWindowTitleVisibility.Hidden
}
答案 0 :(得分:5)
<强>替代强>
如果您只想为整个NSWindow设置背景颜色并隐藏标题栏,您可以将其styleMask设置为纹理:
self.view.window?.styleMask = NSTexturedBackgroundWindowMask
self.view.window?.backgroundColor = NSColor.redColor()
这样做的优点:它向后兼容至少OS X 10.6
答案 1 :(得分:2)
如果我移动你的&#34;摆脱标题栏&#34;代码到AppDelegate
并设置window.backgroundColor
,如下所示:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
window?.titlebarAppearsTransparent = true
window.movableByWindowBackground = true
window.titleVisibility = NSWindowTitleVisibility.Hidden
window.backgroundColor = NSColor.redColor()
let viewController = ViewController()
window.contentViewController = viewController
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
}
然后只需在视图控制器中设置颜色:
override func viewDidLoad() {
super.viewDidLoad()
view.wantsLayer = true
view.layer?.backgroundColor = NSColor.redColor().CGColor
}
有趣的是,我必须在两个地方设置颜色,所以也许@ joshua-nozzi建议的解决方案是更安全的选择
答案 2 :(得分:0)
在创建窗口后,只需将其添加到您的AppDelegate中即可:
window.titlebarAppearsTransparent = true
window.backgroundColor = .red
在OSX 10.15上进行了测试,并创建了一个作为SwiftUI应用程序的项目。
答案 3 :(得分:-2)
添加带有背景颜色的自定义子视图。或者(更好)将该自定义视图设置为窗口的内容视图。