Можно ли добавить 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
если заявление.