如何更改NSToolBar背景颜色?

时间:2014-10-14 22:35:33

标签: objective-c macos

我使用的是NSToolbar,我试图将颜色更改为白色而不是默认灰色。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

由于工具栏集成到窗口标题栏中,您需要同时绘制标题栏工具栏。这基本上意味着您需要接管整个窗口的绘图。

这需要“调配”,虽然效果不错,但Apple不支持,因此可能会从应用商店中拒绝您的应用。

基本上,您需要将自己的代码注入到NSWindow类中,方法是使用objective-c运行时函数来修改类定义。请注意,这会影响应用中的所有窗口,因此您需要使用if语句检查这是否是您要修改的窗口。

基本上是子类NSWindow,在+initialize方法中,找到“框架视图”类,它是执行大部分窗口绘制的类,并将其“drawRect:”方法重命名为“originalDrawRect:”。然后在类上定义一个新的“drawRect:”方法,作为NSWindow子类中方法的副本。此方法应首先调用originalDrawRect,然后在其上执行自定义绘制。

注意:您将绘制窗口标题文本的顶部...因此需要将绘图模式更改为kCGBlendModeColor或其他内容。或者只是再次绘制标题字符串。您可以询问窗口应该绘制标题文本的位置。

以下是一篇包含更多详细信息的完整文章:http://parmanoir.com/Custom_NSThemeFrame

相关问题