objective-c - 如何更改 NSToolBar 背景颜色?

标签 objective-c macos

我正在使用 NSToolbar 并且我正在尝试将颜色更改为白色而不是默认的灰色。我怎样才能做到这一点?

最佳答案

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

这需要“调配”,虽然效果很好,但不受 Apple 支持,因此可能会导致您的应用被应用商店拒绝。

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

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

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

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

关于objective-c - 如何更改 NSToolBar 背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371550/

相关文章:

objective-c - 如何为 -isEqual : with OR condition? 实现 -hash

macos - 如何将自定义 NSView 添加到 Window

objective-c - 关于区 block 和中央调度的问题

ios - 在后台模式下未调用 didReceiveRemoteNotification

ios - 什么是 iOS 7 中的 AppleBasebandManager 框架?

ios - 如何立即移动 CALayer(无动画)

java - 将 Java 转换为 Objective-C : Exception Handling

macos - GIT - 如何在 OSX 上不使用鼠标复制 SHA?

c++ - NSTask 的碳当量?

eclipse - Mac OS X 上的 Eclipse 中切换到下一个和上一个选项卡的快捷键是什么?