Ricerca…


Per barre di stato non UINavigationBar

  1. In info.plist set View controller-based status bar appearance YES
  2. Nella vista i controller non contenuti da UINavigationController implementano questo metodo.

In Objective-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

In Swift:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

Per le barre di stato di UINavigationBar

Sottoclassi UINavigationController e quindi esegui l'override di questi metodi:

In Objective-C:

- (UIStatusBarStyle)preferredStatusBarStyle
{ 
    return UIStatusBarStyleLightContent; 
}

In Swift:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .lightContent
}

In alternativa, puoi impostare barStyle nell'istanza UINavigationBar :

Obiettivo C:

// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;  // this will give you a white status bar

veloce

// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar

UIBarStyle opzioni di UIBarStyle sono default , black , blackOpaque , blackTranslucent . Quest'ultimo 3 dovrebbe darti una barra di stato con testo bianco, solo gli ultimi due specificano l'opacità della barra.

Nota: puoi comunque modificare l'aspetto della barra di navigazione a tuo piacimento.

Se non riesci a cambiare il codice di ViewController

Se stai usando una libreria che contiene (ad esempio) AwesomeViewController con un colore della barra di stato sbagliato puoi provare questo:

  let awesomeViewController = AwesomeViewController()
  awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style

Per il contenimento del ViewController

Se stai utilizzando UIViewControllerContainment ci sono alcuni altri metodi che vale la pena guardare.

Quando vuoi un bambino viewController per controllare la presentazione della barra di stato (cioè se il bambino è posizionato nella parte superiore dello schermo

in Swift

class RootViewController: UIViewController {

    private let messageBarViewController = MessageBarViewController()        

    override func childViewControllerForStatusBarStyle() -> UIViewController? {
        return messageBarViewController
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //add child vc code here...

        setNeedsStatusBarAppearanceUpdate()
    }
}

class MessageBarViewController: UIViewController {
    
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
        return .Default 
    }
}

Modifica dello stile della barra di stato per l'intera applicazione


SWIFT:


Passo 1:

Nel tuo Info.plist aggiungi il seguente attributo:

View controller-based status bar appearance

e impostare il suo valore a

NO

come descritto nell'immagine qui sotto:

inserisci la descrizione dell'immagine qui

Passo 2:

Nel tuo file AppDelegate.swift , nel metodo didFinishLaunchingWithOptions , aggiungi questo codice:

UIApplication.shared.statusBarStyle = .lightContent

o

UIApplication.shared.statusBarStyle = .default
  • L'opzione .lightContent imposterà il colore dello statusBar su bianco, per l'intera app.

  • L'opzione .default imposterà il colore dello statusBar sul colore nero originale, per l'intera app.


Objective-C:


Segui il primo passaggio dalla sezione SWIFT . Quindi aggiungere questo codice al file AppDelegate.m :

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

o

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow