是否可以将NSStatusItem添加到NSStatusBar中的特定位置?

时间:2013-11-14 10:41:23

标签: objective-c macos position nsstatusitem nsstatusbar

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

3 个答案:

答案 0 :(得分:2)

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

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

您可以查看implementation details

答案 1 :(得分:1)

有一个私有API可以执行此操作:

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

这会将状态项一直放到右侧(或者至少在您允许的情况下向右移动。它仍然位于聚光灯的左侧)。< / p>

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

答案 2 :(得分:0)

没有。 Apple不提供选择职位的API。