【发布时间】:2013-03-01 00:56:39
【问题描述】:
有没有什么方法可以自定义 NSMenu 的外观,例如,它的透明度、背景颜色或使用公共 API 的前景色(如 Apple 的 Dock 右键菜单)??
经过大量搜索,我发现了一些代码,他们使用私有 API 使菜单变暗!!!
【问题讨论】:
标签: objective-c macos cocoa nsmenu
有没有什么方法可以自定义 NSMenu 的外观,例如,它的透明度、背景颜色或使用公共 API 的前景色(如 Apple 的 Dock 右键菜单)??
经过大量搜索,我发现了一些代码,他们使用私有 API 使菜单变暗!!!
【问题讨论】:
标签: objective-c macos cocoa nsmenu
我认为,如果您只使用您编写的自定义视图来查看您想要的外观并表现得像一个菜单,那么您会有更好的运气。 Apple 提供了一个示例项目CustomMenus,它说明了该技术。它是WWDC 2010 session videos、Session 145, "Key Event Handling in Cocoa Applications" 之一的伴侣。
【讨论】:
不确定您是否决定采用自己绘制视图的解决方案,但有一个私有 API 可用于执行此操作:
MenuRef m = [[menu _menuImpl] _principalMenuRef];
if (m) {
char on = 1;
SetMenuItemProperty(m, 0, 'dock', 'dark', 1, &on);
}
有一个Github project 实现了这一点,它基本上作为NSMenu 上的一个插入类别工作,并允许使用单个属性变暗。
这绝对是一个坏主意™,因为它使用的私有 API 可能会或可能不会随着未来的操作系统更新而中断,但它似乎是停靠菜单的工作方式。强>
【讨论】: