2013-03-13 27 views
1

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

经过大量的搜索,我发现一些代码他们正在使用私人API来制作菜单黑暗!!!

回答

1

我认为如果您只是使用自定义视图,而您的代码看起来像您想要的并且像菜单一样行事,那么您的运气会更好。一个示例项目,CustomMenus,它说明了该技术。它是WWDC 2010 session videos,Session 145, "Key Event Handling in Cocoa Applications"之一的一个伴侣。

+0

雅那是真的。但是,如果我使用自定义视图,然后我必须手动处理的菜单项的所有验证(即视图启用/禁用)+子处理+跟踪区域和所有那些东西。如果没有其他替代方案是存在的,那么我必须去,只有这个方法! – 2013-03-13 08:37:01

0

不知道,如果你决定去与自己绘制的意见的解决方案,但可以用来做这样的私有API:

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

有一个Github project实现这一点,工作基本上为在NSMenu的下拉类别,并允许与单一属性变暗。

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