自定义NSMenu(如Apple的Dock右击菜单)?

时间:2013-03-13 07:35:36

标签: objective-c macos cocoa nsmenu

有没有办法自定义NSMenu外观,例如,它的透明度,背景颜色或前景色使用公共API“S(如Apple的Dock右键菜单)??

经过大量搜索,我发现了一些代码,他们使用私有API来使菜单变暗!

2 个答案:

答案 0 :(得分:2)

我认为如果您只使用自定义视图,您可以获得更好的运气,您可以根据自己的需要进行查看并按照菜单操作。 Apple提供了一个示例项目CustomMenus,该项目说明了该技术。它是WWDC 2010 session videosSession 145, "Key Event Handling in Cocoa Applications"之一的伴侣。

答案 1 :(得分:1)

不确定您是否决定采用自己绘制视图的解决方案,但有一个私有API可用于执行此操作:

    MenuRef m = [[menu _menuImpl] _principalMenuRef];
    if (m) {
        char on = 1;
        SetMenuItemProperty(m, 0, 'dock', 'dark', 1, &on);
    }

实现此功能的Github project基本上作为NSMenu上的插入式类别工作,并允许使用单个属性进行变暗。

这绝对是一个 bad idea™,因为它使用的私有API可能会或可能不会破坏未来的操作系统更新,但它似乎是停靠菜单的工作方式。