如何在无边框窗口中嵌入NSMenu以创建虚假菜单栏

时间:2012-04-19 18:50:48

标签: macos cocoa menubar

我正在尝试在cocoa应用程序中创建一个虚假的菜单栏。我已经能够完成我需要的95%,只有菜单栏与mainMenu不匹配。请参阅我目前为止的屏幕抓取。

我在xib中使用“弹出按钮”对象来尝试模拟系统菜单栏。问题是它是一个弹出菜单,看起来不像mainMenu。此外,标题菜单项不是hilite,弹出菜单具有与菜单标题重叠的圆角。所以,它很接近,但没有雪茄。

是否可以在无边框窗口内创建与默认系统菜单栏匹配的虚假菜单栏?如果是这样,怎么样?

我也尝试过使用NSStatusItem,默认情况下系统菜单栏比我用按钮完成的更接近,但是我无法将NSStatusItem嵌入到窗口中。

理想情况下,如果有办法直接在Windows视图中嵌入NSMenu,那将是最好的解决方案。

fakemenubar

fakemenubar

1 个答案:

答案 0 :(得分:1)

您需要创建一个自定义按钮或视图,其外观和行为类似于顶级项目,然后将NSMenu分配给您视图的menu商店。

然后,您可以在视图中实现menuForEvent:并在鼠标停止时返回菜单,或者在单击鼠标时调用NSMenu类方法+popUpContextMenu:withEvent:forView:

顺便说一下,这似乎有点奇怪。你为什么要这样做?