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?
risposta
No. Apple non fornisce un'API per scegliere la posizione.
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.
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.
perché non funziona nel mio progetto, sono il 10.12 – jimwan
Consultare questo http://undefinedvalue.com/2009/07/07/adding-custom-view-nsstatusitem –