【问题标题】:Is it possible to add a NSStatusItem to a specific position in NSStatusBar?是否可以将 NSStatusItem 添加到 NSStatusBar 中的特定位置?
【发布时间】:2013-11-14 10:41:23
【问题描述】:

我使用self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 将 statusItem 添加到 OSX 上的 systemStatusBar。 statusItem 然后出现在 systemStatusBar 的最左侧位置。我想知道是否有办法将此类项目添加到特定索引,例如在系统时钟的左侧?

【问题讨论】:

标签: objective-c macos position nsstatusitem nsstatusbar


【解决方案1】:

是和不是。使用私有 API,您可以指定 priority 以添加 NSStatusItem。我为NSStatusBar (NSStatusBar+MISSINGOrder) 开发了一个小类别,女巫为此提供了简单的方法:

NSStatusItem *statusItem =
    [systemStatusBar statusItemWithLength:NSVariableStatusItemLength
                               positioned:NSStatusBarItemOrderingModeAfter
                               relativeTo:NSStatusBarItemPriorityNotificationCenter];

您可以在里面查找implementation details

【讨论】:

    【解决方案2】:

    有一个私有 API 可以做到这一点:

    NSStatusItem *item = [NSStatusBar _statusItemWithLength:NSSquareStatusItemLength  withPriority:INT32_MAX];
    

    这会将状态项一直放在右侧(或者至少,在您允许拥有它们的最右侧。它仍然在聚光灯的左侧)。

    显然,作为私有 API,您应该将其包装在 responseToSelector if 语句中。

    【讨论】:

      【解决方案3】:

      没有。 Apple 不提供 API 来选择位置。

      【讨论】:

        猜你喜欢
        • 2022-12-03
        • 2015-04-02
        • 2011-12-15
        • 2020-01-17
        • 1970-01-01
        • 2021-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多