Come modificare il colore del testo della barra di stato in iOS


990

La mia applicazione ha uno sfondo scuro, ma in iOS 7 la barra di stato è diventata trasparente. Quindi non riesco a vedere nulla lì, solo l'indicatore verde della batteria nell'angolo. Come posso cambiare il colore del testo della barra di stato in bianco come nella schermata principale?


9
Questo link contiene informazioni interessanti su questo problema: doubleencore.com/2013/09/…
Adriano Lucas,

Risposte:


1380
  1. Impostare UIViewControllerBasedStatusBarAppearancesu YESnel file .plist.

  2. Nel viewDidLoadfare a[self setNeedsStatusBarAppearanceUpdate];

  3. Aggiungi il seguente metodo:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }

Nota : questo non funziona per i controller interni UINavigationController, vedere il commento di Tyson di seguito :)

Swift 3 : funzionerà con i controller all'interno UINavigationController. Aggiungi questo codice all'interno del tuo controller.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5 e SwiftUI

Per SwiftUI creare un nuovo file rapido chiamato HostingController.swift

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Quindi modificare le seguenti righe di codice in SceneDelegate.swift

window.rootViewController = UIHostingController(rootView: ContentView())

per

window.rootViewController = HostingController(rootView: ContentView())

78
Non avevo bisogno del passaggio 2.
Jason Moore,

37
Non sembra funzionare su iOS 7 Beta 5 con Xcode5-DP5. favoriteStatusBarStyle non sembra essere chiamato.
wilsontgh,

18
UIViewControllerBasedStatusBar L'aspetto è cambiato in Visualizza l'aspetto della barra di stato basata sul controller in Xcode 5 GM seed
parilogic

42
Ho ottenuto la risposta per Xcode GM Seed: 1. In Info.plist inserisci Visualizza l'aspetto della barra di stato basata sul controller come NO 2. In appDelegate, all'interno del metodo appDidFinishLaunching, inserisci [[Aspetto UIView] setTintColor: [UIColor whiteColor]];
parilogia del

101
UINavigationController è un caso speciale, quanto sopra non funzionerà. Ho passato ore a grattarmi la testa sopra. Vedi qui per la soluzione: stackoverflow.com/a/19513714/505457
Tyson

848

In alternativa, puoi disattivare l'aspetto della barra di stato basata sul controller di visualizzazione:

  1. Impostato View controller-based status bar appearancesu NOnel tuoInfo.plist .
  2. Chiamata [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nota: questo metodo è stato deprecato in iOS9. Utilizzare invece preferredStatusBarStylesu UIViewController. (vedi Libreria degli sviluppatori Apple )


16
Questo è un percorso molto migliore e più semplice.
Mick Byrne,

227
Non è necessario codificare. Tutto può essere fatto dal programma: (1) impostare "Visualizza aspetto barra di stato basata sul controller" su NO e (2) impostare "Stile barra di stato" su "Stile nero opaco". (I valori non elaborati sono UIViewControllerBasedStatusBarAppearance -> NO e UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
SwiftArchitect,

3
Si noti che è necessario impostare il valore info.plist pertinente su NO affinché funzioni.
Abhi Beckert,

9
@gothicdev: bella cattura. Accetterebbe la tua risposta in quanto è la più pulita. L'opzione Light per Bar Style potrebbe essere: UIStatusBarStyleLightContent
benka,

9
Questo metodo è stato deprecato in iOS 9.
lostAtSeaJoshua

439

Puoi farlo senza scrivere nessuna riga di codice!
Effettuare le seguenti operazioni per rendere il testo della barra di stato di colore bianco nell'intera app

Sul tuo file di progetto plist :

  • Stile della barra di stato: Transparent black style (alpha of 0.5)
  • Visualizza l'aspetto della barra di stato basata sul controller: NO
  • La barra di stato è inizialmente nascosta: NO

12
Non so se le cose siano cambiate, ma il valore UIStatusBarStyleLightContent non è riconosciuto da XCode e non è stato trovato in alcuna documentazione ... Anche se sembra funzionare.
Nathan H,

5
Anche questo lo ha cambiato nella schermata iniziale, mentre solo impostarlo sul navigatore non ... Kudos!
viniciusnz,

3
Sicuramente il modo più semplice per farlo e come detto funziona anche su splash screen.
meraviglie

4
Non c'è nulla di chiamato UIStatusBarStyleLightContentin plist infoTUTTA quanto esiste Transparent Blackche farà lo stesso trucco :) inoltre, è necessario aggiungere View controller-based status bar appearancecome non è originariamente lì ed è tutto ciò che serve per farlo funzionare :)
user1949873

45
Per i più pigri come me, copia e via: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Adam Waite,

241

Nota: la risposta più votata non funziona per iOS 7/8

In Info.plist impostare "Visualizza l'aspetto della barra di stato basata sul controller" come NO

In AppDelegate aggiungi

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

per

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    

Questa soluzione funziona per iOS 7/8


10
Obsoleto in iOS 9.: - /
sudo make install

112

Per me, non è successo nulla usando tutte le cose nelle altre risposte (e da altre fonti / documentazione). Ciò che ha aiutato è stato impostare lo stile della barra di navigazione su "Nero" in XIB. Questo ha cambiato il testo in bianco senza alcun codice.

Inserisci qui la descrizione dell'immagine


3
Nel dispositivo nessuna delle risposte sopra ha funzionato per me, ma questa. Penso che dica tutto sul nuovo sistema che devi impostare la barra di navigazione su NERO per avere il testo status_bar BIANCO.
MrTJ,

2
Dopo aver lottato attraverso molte cose, questo è ciò che ha finito per funzionare. Lo stile era impostato sul valore predefinito. Modificato questo e messo a nudo tutti gli altri hack della barra di stato e funziona.
Gujamin,

1
Se non desideri impostare tutte le barre di navigazione in IB, puoi anche impostarne il proxy di aspetto. [[Aspetto UINavigationBar] setBarStyle: UIBarStyleBlack];
Steve Moser,

3
Non funziona per me nello Storyboard iOS7. Sembra che questo potrebbe essere un effetto collaterale di qualcos'altro?
Chris,

Vorrei confermare che tutte le risposte di cui sopra non hanno funzionato per me. Dopo l'immagine, il testo della barra di stato appare bianco. Ma ripeto ancora, le precedenti RISPOSTE con Xcode 6.2 e iOS 8.2 non funzionano.
Markus,

98

Niente di tutto ciò ha funzionato per me, quindi ecco una soluzione funzionante ...

In Info.plist, aggiungi una riga:

UIViewControllerBasedStatusBarAppearancee imposta il valore NO.

Quindi in AppDelegate in didFinishLaunchingWithOptions, aggiungi queste righe:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

Questa soluzione ha funzionato per me mentre quelli sopra non lo hanno fatto.
John Contarino,

Fantastico ma questo UIViewControllerBasedStatusBarAppearance si converte allo stesso: Visualizza automaticamente l'aspetto della barra di stato basata su controller :)
Abhishek Thapliyal

63

Non è necessario fare alcun codice per questo

È necessario aggiungere la chiave "Visualizza aspetto barra di stato basata sul controller" in info.plist come segue: inserisci qui la descrizione dell'immagine

e imposta il suo tipo di valore su Booleano e il valore su NO. Quindi fare clic sulle impostazioni del progetto, quindi fare clic sulla scheda Generale e in Informazioni sulla distribuzione impostare lo stile preferito della barra di stato su .Luce come segue:

inserisci qui la descrizione dell'immagine

Questo è tutto.


1
Mi è piaciuto il tuo approccio! Nel mio caso, stavo cercando di capire come rendere leggero lo stile della barra di stato solo quando è a schermo intero (senza barra di navigazione). Quindi, mi sono reso conto che tutti gli altri schermi dovrebbero adattarsi allo stesso stile di luce. Quindi una buona soluzione è impostare tutto. Grazie! (:
Igor de Lorenzi,

Se non è necessario modificarlo mai mentre l'app è in esecuzione. Questo è l'approccio migliore.
Michael,

Questo approccio sicuramente funziona ma introduce uno strano problema su iPad. Nel caso in cui l'applicazione supporti deeplink e quando si avvia l'applicazione tramite deeplink, il backlink che appare sulla barra di stato scompare.
Chitranshu Asthana,

Il migliore e il più semplice.
Amit Kumar,

la migliore soluzione per me: D
Gold Chicken

48

Solo due passaggi come segue:

Passo 1:

Nella scheda Informazioni di project target, Aggiungi riga:

UIViewControllerBasedStatusBarAppearance, imposta valore NO.

Passo 2:

Nel progetto AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{[application setStatusBarStyle:UIStatusBarStyleLightContent];}

4
Adoro questa risposta perché è la prima volta che utilizzo il parametro "application"))
MUH Mobile Inc.

Notazione a punti e sarebbe perfetta;)
Rivera

43

Funziona con i semi Golden Master iOS 7 e Xcode 5 GM e iOS7 SDK rilasciati il ​​18 settembre 2013 (almeno con il controller di navigazione nascosto):

  1. Impostato the UIViewControllerBasedStatusBarAppearancesu NOin Info.plist.

  2. Nel ViewDidLoadmetodo o ovunque, dove vuoi cambiare lo stile della barra di stato: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


1
I valori predefiniti di UIViewControllerBasedStatusBarAppearance sembrano essere SÌ. "Le app utilizzano automaticamente il nuovo sistema di gestione della barra di stato basato sul controller di visualizzazione. Per annullare questa opzione, aggiungi un valore di NO per la chiave UIViewControllerBasedStatusBarAppearance al tuo Info.plist." [ bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/]
Zsolt

1
Sì !! Dopo aver impostato UIViewControllerBasedStatusBarAppearance su NO, la barra di stato si nasconde nelle viste.
CashLee 李秉骏

dovrebbe essere applicato a tutto viewdidload?
Arnlee Vizcayno,

Puoi aggiungerlo solo nel metodo appDelegates didFinishLoading. O nelle prime visualizzazioni del metodo viewDidLoad se non vuoi che cambi.
Deniss Fedotovs,

1
fantastico, questo ha fatto il lavoro. codifica semplice e ottima.
Felipe,

32

Nel caso in cui il tuo UIViewController sia all'interno di un UINavigationController dovrai impostare BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

La risposta originale è qui

https://devforums.apple.com/message/844264#844264


No, ciò rende semplicemente il colore della barra di navigazione uguale al colore del testo della barra di stato. Questo nasconde il problema, non lo risolve!
wpearse,

2
In iOS7 la barra di stato imiterà UINavigationBar se la vista contiene un UINavigationController, quindi in molti casi questa è la risposta corretta.
jonstaff,

29

Se hai un controller di navigazione incorporato creato tramite Interface Builder , assicurati di impostare quanto segue in una classe che gestisce il controller di navigazione:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Dovrebbe essere tutto ciò di cui hai bisogno.


Questa è stata l'unica soluzione che ha funzionato per me in un'app senza storyboard e xib-less. Dovrebbe essere utile anche per utenti non IB.
Johnny Sparks,

2
Questo è stato perfetto per me quando avevo bisogno di impostare lo stile in modo diverso in ogni controller di visualizzazione
Ben

Se si desidera mantenere "Visualizza aspetto barra di stato basata su controller" impostato su Sì, questa è la strada da percorrere. Grazie!
cloudsurfin,

28

Sto usando Xcode 6 beta 5 su un progetto Swift , per un'app iOS 7.

Ecco cosa ho fatto e funziona:

info.plist:

Inserisci qui la descrizione dell'immagine


2
Grazie sembra che solo la tua soluzione funzioni con l'ultima versione di IOS7
Dekel Maman

Questa soluzione mostra la barra di stato durante il caricamento dell'app, nella schermata di avvio.
Juan Boero,

Risolti i miei problemi in xCode 7.1. Ultima versione. Apple ha dimenticato un paio di pezzi cruciali per far funzionare qualcosa. Ancora.
Michael,

22

In AppDelegate.m, aggiungere quanto segue.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

E nel file Plist, imposta "Visualizza l'aspetto della barra di stato basata sul controller" su NO.


20

Semplicemente in delegato

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

5
L'unica risposta che ha funzionato per me.
Wim Haanstra,

6
Ma per questo dobbiamo disattivare Visualizza l'aspetto della barra di stato basata sul controller .
iamyogish,

Deprecato in iOS9
Dimitris,

20

Bene, questo funziona davvero come un pezzo di torta per me.

Vai alla tua app info.plist.

  1. Impostato View controller-based status bar appearancesuNO
  2. Imposta Status bar stylesuUIStatusBarStyleLightContent

Quindi vai al delegato della tua app e incolla il seguente codice dove imposti il ​​RootViewController di Windows.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

Bingo. Funziona per me.


1
penso che questa sia la risposta corretta (la parte del plist) ... perché dovrei aggiungere codice statico su didfinishlaunchingwithoptions ... Se hai bisogno dello stesso colore per l'intera app questo è il modo giusto
user2387149

20
  1. Vai a Project-> Target,

  2. Quindi impostare Status Bar Stylesu Light. Rende bianca la barra di stato dalla schermata di avvio. Impostazione del progetto

  3. Quindi impostare View controller-based status bar appearanceuguale a NOin Info.plist.


2
La seconda parte in cui si imposta il reale View controller-based status bar appearance equalper NOera il pezzo che mi mancava. Grazie
Will

18

Modifica nelle informazioni PLIST In Swift 3 è molto semplice solo con 2 passaggi. Vai al tuo info.plist e cambia la chiave View controller-based status bar appearancein "NO". Quindi in Appdelegate basta aggiungere questa riga nel metodo didfinishlaunchingwithoptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

questo è stato deprecato in iOS9 ora dovresti fare l'override di questa proprietà nel rootviewcontroller

facendo questo è stato deprecato in iOS 9 dovrebbe farlo sul rootviewcontroller

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

1
È semplicemente fantastico fratello :) Grazie.
Naresh Reddy M

farlo è stato deprecato in iOS 9 dovrebbe farlo sul rootviewcontroller override var preferStatusBarStyle: UIStatusBarStyle {return .lightContent}
James Rochabrun

17

iOS 7 consente ai singoli controller di visualizzazione di determinare l'aspetto della barra di stato, come descritto dalla documentazione per gli sviluppatori Apple:

iOS 7 offre ai controller di visualizzazione la possibilità di regolare lo stile della barra di stato mentre l'app è in esecuzione. Un buon modo per cambiare dinamicamente lo stile della barra di stato è implementare preferredStatusBarStylee, all'interno di un blocco di animazione, aggiornare l'aspetto e la chiamata della barra di stato setNeedsStatusBarAppearanceUpdate.

L'impostazione dell'aspetto della barra di stato a livello globale è un processo in due passaggi.

Innanzitutto, devi dire a iOS che non vuoi impostare l'aspetto della barra di stato in base alla visualizzazione.

Quindi è necessario prendere in carico e effettivamente impostare il nuovo stile della barra di stato globale.

Per disabilitare il controllo della barra di stato view-by-view, devi impostare il View controller-based status bar appearance proprietà in Info.plist.

Apri Project Navigator e seleziona il progetto per la tua app iOS, quindi seleziona la scheda Informazioni.

Passa il mouse sopra una riga, quindi fai clic sul segno più che appare per aggiungere una nuova proprietà alla tua .plist .

Immettere View controller-based status bar appearancenel campo Chiave, quindi assicurarsi che il campo Tipo sia impostato suBoolean . Infine, inserisci NOnel campo Valore.

Per impostare uno stile globale per la barra di stato, aggiungi un'altra proprietà nella scheda Informazioni con una chiave di Status bar style, un Tipo di Stringe un Valore diOpaque black style .

Ecco un post sul blog con qualche dettaglio in più e un po 'di codice di esempio:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/


Grazie. Il mio problema era che non vedevo che il tipo di "Visualizza aspetto della barra di stato basata su controller" fosse impostato su String. La modifica del file .plist "a mano" e l'inserimento del valore booleano hanno chiarito le cose.
Chris Prince,

12

Non c'è bisogno di aggiungere altro, basta scrivere questo codice nel viewController e ottenere la barra di stato di colore bianco

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

Metti questo sotto ViewController.m dopo l'implementazione. È il più semplice e funziona alla grande! Grazie Mohit!
Phil Mulkins,

12

Risposta aggiornata per Xcode GM Seed:

  1. In Info.plistput View controller-based status bar appearancecomeNO

  2. Nel progetto, imposta:

    Inserisci qui la descrizione dell'immagine

  3. In ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Ciò ha cambiato la barra delle schede, non la barra di stato per me.
Keith,

11

Penso che tutte le risposte non indichino davvero il problema perché tutte funzionano in scenari specifici. Ma se hai bisogno di coprire tutti i casi segui i seguenti punti:

A seconda di dove è necessario lo stile chiaro della barra di stato, dovresti sempre tenere presente questi 3 punti:

1) Se hai bisogno della barra di stato nella schermata di avvio o in altri luoghi, dove non puoi controllarla (non nei controller di visualizzazione, ma piuttosto in alcuni elementi / momenti controllati dal sistema come la schermata di avvio) Vai alle impostazioni del tuo progetto Impostazioni del progetto

2) se si dispone di un controller all'interno di un controller di navigazione È possibile modificarlo nel generatore di interfaccia come segue:

a) Selezionare la barra di navigazione del controller di navigazione Seleziona la barra di navigazione del controller di navigazione

b) Quindi imposta lo stile della barra di navigazione su "Nero", poiché ciò significa che avrai uno "nero" -> sfondo scuro sotto la barra di stato, in modo da impostare la barra di stato su bianco

inserisci qui la descrizione dell'immagine

O fallo nel codice come segue

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Se hai solo il controller che deve avere il suo stile di barra di stato e non è incorporato in una struttura di container come UINavigationController

Imposta lo stile della barra di stato nel codice per il controller:

Impostazione dello stile della barra di stato nel codice


per favore, spiega il tuo caso e cercherò di aiutarti
Fawkes,

1
Ho dovuto aggiungere StatusBarIsIntiallyHidden = NO al plist e ViewControllerBasedApplicationStatusBarAppearnce = NO al plist. Quindi funziona usando la prima parte
Michael,

Avevi una schermata di avvio con la stessa "immagine" del primo controller della vista di caricamento? Inoltre, nella sezione "Informazioni" del tuo target puoi provare a impostare la "Nascondi barra di stato" su false ed evitare di gestire il tuo .plist. Flag "StatusBarIsIntiallyHidden"
Fawkes,

Io non. Sta usando lo xib predefinito generato.
Michael,

In realtà ho riscontrato questo problema durante la creazione di un nuovo progetto in xCode 7.1, motivo per cui ho pensato che fosse così strano
Michael,

10

Semplicemente chiamando

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

nel

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

il metodo dei miei AppDelegatelavori è perfetto per me in iOS7.


Wow, tanta merda qui ma questa risposta ha funzionato per me. Sto usando Xcode 6 e iOS 8 SDK
Ethan Parker,

1
Eccellente, funziona per me su iOS 9 conView controller-based status bar appearance = NO
dstudeba il

9

Questo è documentato nella Guida alla transizione dell'interfaccia utente di iOS 7 , a cui è necessario un ID sviluppatore Apple per accedere direttamente. Il brano pertinente:

Poiché la barra di stato è trasparente, la vista dietro mostra attraverso. [...] Usa una UIStatusBarStylecostante per specificare se il contenuto della barra di stato deve essere scuro o chiaro:

UIStatusBarStyleDefaultmostra contenuti oscuri. [...]

UIStatusBarStyleLightContentmostra contenuto leggero. Utilizzare quando il contenuto oscuro si trova dietro la barra di stato.

Forse anche di interesse:

In iOS 7, puoi controllare lo stile della barra di stato da un singolo controller vew e modificarlo mentre l'app è in esecuzione. Per attivare questo comportamento, aggiungi la UIViewControllerBasedStatusBarAppearancechiave al Info.plistfile di un'app e assegnagli il valore YES.

Consiglio vivamente di dare un'occhiata al documento, al quale, di nuovo, puoi accedere con il tuo ID sviluppatore Apple.


3
Ho già provato [applicazione setStatusBarStyle: UIStatusBarStyleLightContent]; ma in realtà non cambia nulla, il colore del testo è ancora nero
Oleksandr Veremchuk,

Mi piacerebbe essere di maggiore aiuto, ma come ho detto, non ho abbastanza familiarità con il processo di sviluppo di iOS per sapere cosa suggerire. Scusate!
Aaron Miller,

1) impostare UIViewControllerBasedStatusBarAppearance su YES nel plist 2) in viewDidLoad do a [self setNeedsStatusBarAppearanceUpdate]; 3) aggiungi il seguente metodo :-( UIStatusBarStyle) favoriteStatusBarStyle {return UIStatusBarStyleLightContent; }
Peter B. Kramer,

9

Ecco le Linee guida / istruzioni Apple sul cambio della barra di stato. Nella barra di stato sono consentiti solo Dark & ​​light (while & black).

Ecco - Come modificare lo stile della barra di stato:

Se si desidera impostare lo stile della barra di stato, il livello dell'applicazione è impostato UIViewControllerBasedStatusBarAppearancesu NOnel file `.plist '.

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

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

  3. eseguire l'override diStatusBarStyle preferito nel controller di visualizzazione.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

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


Ecco alcuni trucchi per modificare / impostare il colore di sfondo della barra di stato durante l'avvio dell'applicazione o durante viewDidLoad del controller della vista.

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


8

Ho fatto alcune cose diverse e funziona per me.

Senza modifiche al codice, ho configurato il mio file .plist in questo modo:

  • Visualizza l'aspetto della barra di stato basata sul controller> NO
  • Stile della barra di stato> UIStatusBarStyleLightContent (stringa semplice)

Spero possa essere d'aiuto.

modificare

Per ogni controller di visualizzazione cambio la proprietà Metriche simulate della "barra di stato", nello storyboard, da "dedotto" a "Contenuto leggero"


8

Se si desidera lo stesso risultato con Swift, è possibile utilizzare questo codice nel file AppDelegate.swift:

UINavigationBar.appearance().barStyle = .BlackTranslucent

E il testo della barra di stato sarà bianco :-)!


8

Se si desidera ancora utilizzare View controller-based status bar appearancein info.plist impostato su SÌ, ovvero è possibile modificare la barra di stato per ciascun controller di visualizzazione, utilizzare quanto segue per il testo bianco nella barra di stato in ViewDidLoad:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];

Barra di navigazione! = Barra di stato.
Michael Peterson,

... Hai provato!? (E sì, per la barra di stato)
eirik

7

In Plist, aggiungi questo:

  • Stile della barra di stato: UIStatusBarStyleLightContent
  • Visualizza l'aspetto della barra di stato basata sul controller: NO

7

in info.plist imposta il valore del campo NO Visualizza l'aspetto della barra di stato basata sul controller e imposta la luce dello stile della barra di stato nella destinazione> impostazione generale.


2
vincitore vincitore cena a base di pollo
tommybananas,

7

Lascia che ti dia una risposta completa alla tua domanda. Cambiare il colore del testo della barra di stato è molto semplice ma è un po 'confuso in iOS 7 appositamente per i neofiti.

Se stai cercando di cambiare il colore dal nero al bianco nello Storyboard selezionando il controller di visualizzazione e andando su Metriche simulate sul lato destro, non funzionerà e non so perché. Dovrebbe funzionare cambiando in questo modo ma comunque.

In secondo luogo, non troverai la proprietà UIViewControllerBasedStatusBarAppearance nel tuo plist, ma per impostazione predefinita non è presente. Devi aggiungerlo da solo facendo clic sul pulsante + e quindi impostarlo su NO.

colore del testo della barra di stato di iOS 7

Infine, devi andare al tuo file AppDelegate.m e aggiungere quanto segue nel metodo didFinishLaunchingWithOptions, aggiungere la seguente riga:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Questo cambierà il colore in bianco per tutti i controller della vista. Spero che sia di aiuto!


Questo metodo è obsoleto su iOS 9
Trung Bui
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.