【问题标题】:How to create the NSMenuItem view for a menu item with an embedded NSProgressIndicator?如何为具有嵌入式 NSProgressIndicator 的菜单项创建 NSMenuItem 视图?
【发布时间】:2014-09-21 15:59:24
【问题描述】:

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

我认为我需要使用setView: 方法,如Views in Menu Items 所述。但是,当我调用setView: 并传递NSProgressIndicator 时,只显示NSProgressIndicator

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

【问题讨论】:

    标签: objective-c cocoa nsmenuitem nsprogressindicator


    【解决方案1】:

    如您链接到的文档中所述:

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

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

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

    MenuItemView
    CustomMenus
    GridMenu

    【讨论】:

    • 感谢您的回答。我现在正在查看 CustomMenus 示例。这似乎最接近我想要做的。特别是,有一个suggestionprototype.xib,我正试图跟随它......
    • 首先,该示例有一个随附的WWDC video,您可以观看。此外,它的一部分在菜单中显示了一个视图,但它的一部分显示了如何构建一个看起来和工作起来像菜单但实际上不是NSMenu 的窗口。因此,请注意您正在查看的部分。
    • 那个视频很有帮助。会议名称是“可可应用程序中的关键事件处理”,但它涵盖了从 19:13 开始的自定义菜单。
    • @KenThomases 我不能将NSImage 与填充整个项目的菜单项相关联吗?
    猜你喜欢
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多