Modifica del colore del testo della barra di stato nella schermata iniziale di iOS 7


98

So che ci sono già alcune domande di stackoverflow che dicono come cambiare la barra di stato per tutti i controller di visualizzazione. Attualmente sto cambiando il colore della barra di stato in questo modo:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nel application:DidFinishLaunching

Inoltre, ho modificato il valore di UIViewControllerBasedStatusBarAppearance nel plist in NO. Tuttavia, nella schermata iniziale mostra ancora il testo della barra di stato con il colore nero.

È possibile modificare il colore del colore del testo della barra di stato nella schermata iniziale ?


Cosa intendi con "mostra ancora la barra di stato con il colore nero": Se il codice funziona, il carattere della barra di stato dovrebbe essere bianco, il colore di sfondo della barra di stato dipende dall'immagine splash (che ora dovrebbe includere l'altezza della barra di stato - 20 pixel)
Vinzzz

Scusa, mi mancava davvero la parola di testo. Sto cambiando solo il colore del testo della barra di stato. Posso cambiarlo dopo la schermata iniziale, ma non posso modificarlo quando è in corso la schermata iniziale.
Tiago Almeida

Risposte:


224

Nel file plist del progetto aggiungere la proprietà "Status Bar Style" (la chiave è UIStatusBarStyle). Quindi ignora tutti i possibili valori elencati nel menu a discesa per questa proprietà e tipoUIStatusBarStyleLightContent invece.

E non devi impostare UIViewControllerBasedStatusBarAppearancesu NOnel tuo plist, puoi impostare quello preferredStatusBarStyleche vuoi sui tuoi controller di visualizzazione.


C'è un modo per renderlo compatibile con una barra di stato colorata su iOS 6?
Rafael Nobre

1
Il colore del testo della barra di stato è bianco o nero. Lo sfondo della barra proviene dall'immagine di avvio, quindi dalla vista del ViewController se si estende sotto le barre.
Vinzzz

1
Dopo TANTISSIMI metodi diversi, questo FINALMENTE ha funzionato (con UIViewControllerBasedStatusBarAppearance impostato su NO). Sei un eroe.
Tamás Sengel,

puoi farlo anche tramite il codice UIApplication.sharedApplication (). statusBarStyle = .LightContent. Lo faccio in AppDelegate
Yasmin Tiomkin

@Yasmin: per cambiare colore DOPO la schermata iniziale, questa soluzione faceva già parte della domanda;)
Vinzzz

33

Puoi farlo senza scrivere alcuna riga di codice.
Effettua le seguenti operazioni per rendere bianco il testo della barra di stato nell'intera app

Sul file plist del progetto :

  • Stile della barra di stato: UIStatusBarStyleLightContent
  • Visualizza l'aspetto della barra di stato basata su controller: NO
  • La barra di stato è inizialmente nascosta: NO

La risposta accettata è buona, ma non ha funzionato su tutti i miei controller di visualizzazione senza eseguire il secondo punto sopra. Grazie!
Clifton Labrum

"Visualizza l'aspetto della barra di stato basata su controller: YES" sembra ancora fare il trucco (iOS 9)
Nicolas Miari

19

È possibile eseguire le seguenti operazioni per ottenere la barra di stato del colore chiaro in tutta l'applicazione.

  1. Seleziona il nome del progetto nella navigazione del progetto.
  2. Seleziona il nome di una destinazione dall'elenco nella colonna di sinistra dell'editor del progetto.
  3. Fare clic su Generale nella parte superiore dell'editor del progetto.
  4. Imposta stile barra di stato -> Luce

Nel tuo file plist aggiungi i seguenti valori:

  1. Stile della barra di stato: UIStatusBarStyleLightContent
  2. Visualizza l'aspetto della barra di stato basata su controller - NO

Questo ti aiuterà a ottenere la barra di stato in colore BIANCO in tutta l'applicazione, incluso SPLASH SCREEN.


7

Impostare UIViewControllerBasedStatusBarAppearancesu No nel plist

Quindi aggiungi il seguente codice nell'opzione di avvio completata

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Si prega di seguire questo codice che ha funzionato per me


questo mostra il testo bianco sulla barra di stato mentre anche il mio sfondo è chiaro. come posso mostrare il testo nero
Mangesh

Mangesh on the Target vai alle impostazioni generali lì avrai un'opzione per impostare lo stile della barra di stato
Preejith Augustine

Potresti effettivamente scrivere quella prima riga un po 'più semplice usando la sintassi del punto, in questo modo: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman

2

Ecco le linee guida / istruzioni Apple sulla modifica della barra di stato.

Ecco - Come modificare lo stile della barra di stato:

Se si desidera impostare lo stile della barra di stato, impostare il livello di applicazione UIViewControllerBasedStatusBarAppearancesu NOnel file ".plist".

se vuoi impostare lo stile della barra di stato, a livello di controller di visualizzazione, segui questi passaggi:

  1. Impostare il UIViewControllerBasedStatusBarAppearancea YESnel .plistfile, se è necessario impostare lo stile della barra di stato solo a livello di UIViewController.
  2. Nella funzione di aggiunta viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. eseguire l'override di preferredStatusBarStyle nel controller della vista.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Imposta il valore di .plist in base al livello di configurazione dello stile della barra di stato. inserisci qui la descrizione dell'immagine


È possibile impostare il colore di sfondo per la barra di stato durante l'avvio dell'applicazione o durante viewDidLoad del controller di visualizzazione.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Ecco il risultato:

inserisci qui la descrizione dell'immagine


1

È possibile eseguire le seguenti operazioni per ottenere la barra di stato del colore chiaro in tutta l'applicazione.

Seleziona il nome del progetto nella navigazione del progetto. Seleziona il nome di una destinazione dall'elenco nella colonna di sinistra dell'editor del progetto. Fare clic su Generale nella parte superiore dell'editor del progetto. Imposta stile barra di stato -> Luce

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.