【发布时间】:2012-09-07 17:25:32
【问题描述】:
我知道这不会是一个受欢迎的问题,而且有些人不喜欢外观不标准的应用,但它对我的应用很有用。
是否可以以“标准”非私有 API 方式更改 NSWindow 标题栏文本的颜色?
我知道如果我使用私有 API (as mentioned in this answer)) 是可能的,但我认为没有私有 API 也可以做到这一点,因为 Pixelmator 已经做到了,并且没有被 MAS 拒绝。我知道也可以通过使一个无边框的窗口并自己绘制所有内容,但我不认为 Pixelmator 是这样做的,因为他们仍然可以获得标准 NSWindow 标题栏附带的所有附加位;可拖动的图标,重命名窗口,用于文档修订的下拉菜单和全屏按钮。
基本上,我使用 setBackgroundColor: 制作了一个黑色窗口:但文本仍然显示为黑色,这在黑色背景上不起作用。
那么有谁知道这样做的方法,或者 Pixelmator 是如何做到的?
【问题讨论】:
-
我懒得尝试这个,但我想知道如果你得到窗口的内容视图并询问它的超级视图你会得到什么。也许你会得到 nil,或者你会得到一个包含其他隐藏内容的根视图。
-
你得到了一个私有的 NSView 子类,叫做 NSThemeView。它确实包含一些用于窗口关闭、最小化和最大化按钮的私有视图,但我看不到如何在不使用私有 API 的情况下访问标题。
-
有一篇 Matt Gallagher 写的关于自定义窗口的文章,你应该可以在那里找到一些信息。 cocoawithlove.com/2008/12/…
-
问题中提到我不想做一个自定义窗口
-
我已经发布了答案。检查我的answer here