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

Dan*_*ien 4 cocoa objective-c nsmenuitem nsprogressindicator

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

Mac 上打开的 Wi-Fi 状态菜单的屏幕截图,显示“Wi-Fi:查找网络...”菜单项

我认为我将需要使用如下所述的setView:方法:菜单项中的视图。但是,当我调用setView:并传递 时NSProgressIndicator,只NSProgressIndicator显示 。

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

Ken*_*ses 5

如您链接的文档中所述:

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

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

您必须在选择或跟踪项目时突出显示。您还必须进行鼠标跟踪。Apple 有一些示例代码可以演示其中的各个部分:

MenuItemView
CustomMenus
GridMenu