【问题标题】:Change title bar colour - Mac更改标题栏颜色 - Mac
【发布时间】:2015-03-28 18:22:58
【问题描述】:

我正在开发一个 Mac 应用程序。我是否可以在 NSWindow 中更改标题栏颜色?我知道如何删除它,但问题是它也删除了三个按钮(关闭、最小化、调整大小)。我想保留三个按钮但摆脱栏。

有没有办法做到这一点?

【问题讨论】:

    标签: macos cocoa colors titlebar uivisualeffectview


    【解决方案1】:

    迅捷之道

    我有点疯狂地试图找到这个,当我发现我正在阅读的所有这些答案这么长时,我简直不敢相信它只有两行!

    我是我的class ViewController 我去了 viewDidAppear 并将其添加到其中。

    override func viewDidAppear() {
            view.window?.titlebarAppearsTransparent = true
            view.window?.backgroundColor = NSColor.clearColor()
        }
    

    非常简单。

    【讨论】:

    • 有趣我会试试这个。谢谢。
    • 是的,让我知道你的情况如何,因为我尝试的很多事情都发生在我身上!
    【解决方案2】:

    是的,它已经在这里完成了:

    How to Change Color of NSWindow Title Bar in OSX

    他们说这里的单链接答案是不好的形式,但见鬼——它主要满足你的要求。它有效——我自己试过了。

    需要注意的几件事:他的代码只适用于 NSApp 的默认窗口......所以你需要做一些工作来将它推广到你的 /“任何”NSWindow 的情况。 (将他放在 AppDelegate 中的代码移到您自己的 NSWindow 子类或您的 NSWindowController 中。可能是控制器。)

    另外,他说用“MyTitleView”子类化NSView,但在代码中,它实际上叫做“BlackTitlebarView”......只要选择一个名字,保持一致,就可以了。此外,标题文本的颜色在 drawString: 方法中,其中他有 [NSColor whiteColor]。此外,他喜欢渐变,当您运行代码时您会看到...但是你可能会考虑使用这些花哨的东西,因为你是免费的。

    【讨论】:

    • 不鼓励使用单链接答案,因为您是为后代而回答,而不仅仅是为最初的提问者。无法保证特定链接在一年后仍然存在。我不知道在链接到 * 时这是否同样适用。 :-)
    • 您说“我不知道在链接到 * 时这是否同样适用”,假设它不适用于内部 SO 链接似乎非常合理。如果 SO 死了,那么死链接的问题就会自行解决,n'est-ce pas?所以我不想粗鲁,但我看不出你评论的价值。