2013-11-14 17 views
5

Ich verwende self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];, um der SystemStatusBar unter OSX ein statusItem hinzuzufügen. Das statusItem erscheint dann an der ganz linken Position in der SystemStatusBar. Ich habe mich gefragt, ob es einen Weg gibt, solch einen Gegenstand zu einem spezifischen Index hinzuzufügen, z. auf der linken Seite der Systemuhr?Ist es möglich, ein NSStatusItem zu einer bestimmten Position in NSStatusBar hinzuzufügen?

+0

Verweise http://undefinedvalue.com/2009/07/07/adding-custom-view-nsstatusitem –

Antwort

0

Nein. Apple bietet keine API zur Auswahl der Position an.

1

Es gibt eine private API, dies zu tun:

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

, die den Status Artikel stellen wird den ganzen Weg nach rechts (oder zumindest so weit nach rechts, wie Sie sie haben sind erlaubt Es ist immer noch links von Spotlight.

Offensichtlich eine private API sollten Sie es in eine responseToSelector if-Anweisung wickeln.

2

Ja und nein. Mit der privaten API können Sie priority zum Hinzufügen von NSStatusItem angeben. Ich habe eine kleine Kategorie für NSStatusBar entwickelt (NSStatusBar+MISSINGOrder) Hexe bietet eine einfache Methode dafür:

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

Sie können für implementation details nach innen schauen.

+0

warum es in meinem Projekt nicht funktioniert, bin ich am 10.12 – jimwan