A partire da iOS7 lo stile della status bar del dispositivo può essere modificato in due modi:
- per-Controller, ovvero relativamente a ciascun controller.
- per-Application, ovvero relativamente all'intera applicazione.
Per-Controller
La modalità predefinita per iOS7 e superiori è la prima, il che significa che il sistema si aspetta che le modifiche vengano effettuate all'interno di ciascun controller. Per ottenere questo risultato occorre aggiungere la seguente riga di codice al metodo viewDidLoad:
1 |
[self setNeedsStatusBarAppearanceUpdate]; |
E quindi implementare il metodo preferredStatusBarStyle, facendo in modo che restituisca lo stile desiderato. Ad esempio, se abbiamo impostato uno sfondo scuro è probabile che ci servirà uno stile che preveda un contenuto chiaro come nell'esempio seguente:
1 2 3 |
- (UIStatusBarStyle) preferredStatusBarStyle { return UIStatusBarStyleLightContent; } |
Mentre in caso di sfondo chiaro è probabile che ci troveremo meglio con lo stile predefinito, che prevede appunto un contenuto scuro:
1 2 3 |
- (UIStatusBarStyle) preferredStatusBarStyle { return UIStatusBarStyleDefault; } |
E così via.
Per-Application
Se vogliamo modificare lo stile della Status Bar per tutti i controller della nostra applicazione, la prima cosa da fare è cambiare l'impostazione predefinita. Per far questo occorre aggiungere una chiave all'elenco delle proprietà personalizzate dell'applicazione, accessibili mediante il file info.plist nella cartella /Supporting Files/ oppure selezionando il Target relativo all'applicazione stessa e posizionandosi nella tab denominata Info:
La proprietà che va aggiunta è la seguente:
1 |
View controller-based status bar appearance : NO |
E' possibile controllare di averla aggiunta correttamente osservando l'elenco modificato tramite l'interfaccia utente di XCode:
Una volta fatto questo è sufficiente aggiungere la seguente riga di codice al metodo didFinishLaunchingWithOptions del file AppDelegate.m relativo alla nostra applicazione:
1 |
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; |
Per ulteriori approfondimenti su come personalizzare la Status Bar consigliamo la lettura:
- dell'apposita pagina presente nella documentazione ufficiale.
- di questa domanda (e relative risposte) sul sito StackOverflow.
Buono studio e... felice sviluppo!