我使用的是NSToolbar,我试图将颜色更改为白色,而不是默认的灰色。我怎样才能做到这一点?
发布于 2014-10-14 23:41:55
由于工具栏集成到窗口标题栏中,因此需要同时绘制标题栏和工具栏。这基本上意味着你需要接管整个窗口的绘图工作。
这需要"swizzling“,虽然它工作得很好,但不受苹果的支持,因此你的应用程序可能会被应用商店拒绝。
基本上,您需要使用objective运行时函数来修改类定义,从而将自己的代码注入NSWindow类。请注意,这将影响应用程序中的所有窗口,因此您需要有一个if语句来检查这是否是要修改的窗口。
子类NSWindow,在+initialize方法中,查找执行大部分窗口绘图的“框架视图”类,并将它的"drawRect:“方法重命名为"originalDrawRect:”。然后在类上定义一个新的"drawRect:“方法,作为NSWindow子类中方法的副本。此方法应首先调用originalDrawRect,然后在其之上执行自定义绘图。
注意:您将在窗口标题文本的顶部绘制.因此,需要将绘图模式更改为kCGBlendModeColor之类的。或者再画一次标题字符串。您可以询问窗口在何处绘制标题文本。
下面是一篇包含更多详细信息的完整文章:NSThemeFrame
https://stackoverflow.com/questions/26371550
复制相似问题