Можно ли добавить NSStatusItem в определенную позицию в NSStatusBar?

Я использую self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; добавить элемент StatusItem в systemStatusBar в OSX. StatusItem затем появится в самой левой позиции в systemStatusBar. Мне было интересно, есть ли способ добавить такой элемент в определенный индекс, например, на левой стороне системных часов?

3 ответа

И да и нет. Используя приватный API вы можете указать priority для добавления NSStatusItem, Я разработал крошечную категорию для NSStatusBar ( https://github.com/shergin/NSStatusBar-MISSINGOrder) witch предоставляет простой метод для этого:

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

Вы можете заглянуть внутрь для деталей реализации.

Существует частный API для этого:

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

Это поместит элемент статуса полностью вправо (или, по крайней мере, настолько вправо, насколько вам позволено иметь его. Он все еще слева от центра внимания).

Очевидно, что являясь частным API, вы должны обернуть его в responseToSelector если заявление.

Нет. Apple не предоставляет API для выбора должности.

Другие вопросы по тегам