2013-11-14 107 views
5

我使用self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];向OSX上的systemStatusBar添加一個statusItem。 statusItem然後出現在systemStatusBar的最左邊位置。我想知道是否有辦法將這樣的項目添加到特定的索引中,例如在系統時鐘的左側?是否可以將NSStatusItem添加到NSStatusBar中的特定位置?

+0

請參閱http://undefinedvalue.com/2009/07/07/adding-custom-view-nsstatusitem –

回答

0

不可以。Apple不提供API來選擇位置。

1

有一個私人的API來做到這一點:

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

因爲你被允許有他們,將狀態項目將一路向右(或者至少,就向右它仍然在聚光燈的左側)。

顯然是一個私人API,你應該把它包裝在一個responseToSelector if語句中。

2

是的,沒有。使用私有API,您可以指定priority添加NSStatusItem。我已經開發了一個小類別NSStatusBarNSStatusBar+MISSINGOrder)巫提供了簡單的方法是:

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

你可以看看裏面的implementation details

+0

爲什麼它在我的項目中不起作用,我在10.12 – jimwan

相關問題