如何为具有嵌入式NSProgressIndicator的菜单项创建NSMenuItem视图?

时间:2014-09-21 15:59:24

标签: objective-c cocoa nsmenuitem nsprogressindicator

我想创建一个嵌入式NSProgressIndicator的菜单项,类似于Wi-Fi状态菜单中的“Wi-Fi:寻找网络......”菜单项:

Screenshot of opened Wi-Fi status menu on Mac showing "Wi-Fi: Looking for Networks…" menu item

我认为我需要使用Views in Menu Items中讨论的setView:方法。但是,当我致电setView:并传递NSProgressIndicator时,只显示NSProgressIndicator

如何创建自定义菜单项视图以获得与Wi-Fi状态菜单中的“Wi-Fi:寻找网络...”菜单项类似的结果?

1 个答案:

答案 0 :(得分:4)

如您所链接的文件中所述:

  

带有视图的菜单项不会绘制其标题,状态,字体或其他标准绘图属性,并将绘图责任完全分配给视图。

因此,如果您希望您的菜单项看起来像普通菜单项以及其他一些东西,那么除了其他内容外,您的视图还必须绘制正常的菜单项功能。因此,您可以将菜单项的视图设置为自定义视图。进度指示器将是该自定义视图的一个子视图,但您需要其他功能的其他子视图。例如,菜单项文本的文本字段和状态指示器的图像视图(如果项目显示状态)。

在选择或跟踪项目时,您必须绘制突出显示。您还必须进行鼠标跟踪。 Apple提供了一些示例代码,演示了以下各个部分:

MenuItemView
CustomMenus
GridMenu