iOS
Cambia colore barra di stato
Ricerca…
Per barre di stato non UINavigationBar
- In info.plist set
View controller-based status bar appearance
YES
- 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:
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];