2013-11-14 18 views
5

Io uso self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; per aggiungere un statusItem a systemStatusBar su OSX. Lo statusItem viene quindi visualizzato nella posizione più a sinistra di systemStatusBar. Mi stavo chiedendo se esiste un modo per aggiungere un elemento del genere a un indice specifico, ad es. sul lato sinistro dell'orologio di sistema?È possibile aggiungere un NSStatusItem a una posizione specifica in NSStatusBar?

+0

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

risposta

0

No. Apple non fornisce un'API per scegliere la posizione.

1

C'è un privato API per fare questo:

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

che metterà l'elemento dello stato tutta la strada a destra (o almeno, il più a destra, come si è permesso di averli È ancora a sinistra dei riflettori).

Ovviamente essendo un'API privata, è consigliabile includerla in un'istruzione responseToSelector if.

2

Sì e no. Utilizzando l'API privata puoi specificare priority per aggiungere NSStatusItem. Ho sviluppato una piccola categoria per NSStatusBar (NSStatusBar+MISSINGOrder) strega fornisce metodo semplice per questo:

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

si può guardare all'interno per implementation details.

+0

perché non funziona nel mio progetto, sono il 10.12 – jimwan