XCode: cambiare lo stile e/o il colore della Status Bar in Objective-C

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:

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:

Mentre in caso di sfondo chiaro è probabile che ci troveremo meglio con lo stile predefinito, che prevede appunto un contenuto scuro:

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:

app-info.plist
Due diversi modi per accedere alle proprietà personalizzate dell’applicazione.

 

La proprietà che va aggiunta è la seguente:

E’ possibile controllare di averla aggiunta correttamente osservando l’elenco modificato tramite l’interfaccia utente di XCode:

view-controller.based

Una volta fatto questo è sufficiente aggiungere la seguente riga di codice al metodo didFinishLaunchingWithOptions del file AppDelegate.m relativo alla nostra applicazione:

Per ulteriori approfondimenti su come personalizzare la Status Bar consigliamo la lettura:

Buono studio e… felice sviluppo!

 

RELATED POSTS

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane.

View all posts by Ryan