2015-09-23 8 views
11

Voglio applicare lo stile di contenuto leggero all'intera applicazione.Come possiamo impostare lo stile di contenuto leggero della barra di stato in iOS 9 per l'intera applicazione?

Il seguente metodo è deprecato in iOS 9 senza il metodo di sostituzione.

-setStatusBarStyle: animato:

Imposta lo stile della barra di stato, opzionalmente animare la transizione al nuovo stile.

sta lavorando in AppDelegate come come:

Swift 1.2 Codice:

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true) 

Ma quando aggiorno il mio progetto a iOS 9/Swift 2 che stanno dando me messaggio di avviso su :

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
<Error>: CGContextTranslateCTM: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 
<Error>: CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 

Così come per la soluzione dal apple forum e da questa risposta CGContextSaveGState: invalid context 0x0 Error only on device

Così, ho rimosso la proprietà UIViewControllerBasedStatusBarAppearance dal file info.plist come per la soluzione.

Ora la situazione è quella Come è possibile impostare lo stile di contenuto leggero della barra di stato in iOS 9 per l'intera applicazione?

Dal forum:

enter image description here

non voglio impostare il contenuto di luce per ciascuno e per ogni vista.

Qualche suggerimento?

L'obiettivo-C dovrebbe avere lo stesso problema.

+0

Stai utilizzando UINavigationController? – matt

+1

@matt Sì, signore. –

risposta

27

È possibile risparmiare un sacco di lavoro utilizzando un UINavigationController e impostando la barra di spostamento barStyle su .Black. Devi farlo solo una volta; puoi farlo nell'editor storyboard.

Questo trasformerà automaticamente lo stile della barra di stato in .LightContent finché questo UINavigationController è in comando.

+0

Grazie per la risposta, controllerò e ti farò sapere. –

+0

Woooa! Funziona bene :) Grazie mille. Puoi suggerire cosa dobbiamo fare se non c'è 'UINavigationController'? –

+2

In tal caso, è necessario inserire l'intera interfaccia in un controller di visualizzazione contenitore padre personalizzato che funge da controller di visualizzazione radice dell'intera app e implementa 'preferredStatusBarStyle'. O quello o semplicemente morde il proiettile e implementa 'preferredStatusBarStyle' ovunque. – matt

0

È inoltre possibile utilizzare: UIApplication.shared.statusBarStyle = .lightContent. Funziona anche in swift3.

+0

Dovrebbe funzionare, ma credo che sia stato deprecato. –

+0

In swift3 funziona, lo sto usando nel mio attuale progetto. – Amanpreet