iOS
Cambiar color de barra de estado
Buscar..
Para barras de estado que no sean de UINavigationBar
- En info.plist configurar
View controller-based status bar appearance
enYES
- En vista, los controladores no contenidos en
UINavigationController
implementan este método.
En Objective-C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
En Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
Para las barras de estado de UINavigationBar
Subclase UINavigationController y luego invalida estos métodos:
En Objective-C:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
En Swift:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .lightContent
}
Alternativamente, puede establecer barStyle
en la instancia de UINavigationBar
:
C objetivo:
// e.g. in your view controller's viewDidLoad method:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack; // this will give you a white status bar
Rápido
// e.g. in your view controller's viewDidLoad method:
navigationController?.navigationBar.barStyle = .black // this will give you a white status bar
UIBarStyle
opciones de UIBarStyle
son default
, black
, blackOpaque
, blackTranslucent
. Los últimos 3 deberían darle una barra de estado con texto blanco, solo los dos últimos especifican la opacidad de la barra.
Nota: todavía puedes cambiar el aspecto de tu barra de navegación como quieras.
Si no puede cambiar el código de ViewController
Si está utilizando una biblioteca que contiene (por ejemplo) AwesomeViewController con un color de barra de estado incorrecto, puede intentar esto:
let awesomeViewController = AwesomeViewController()
awesomeViewController.navigationBar.barStyle = .blackTranslucent // or other style
Para la contención de ViewController
Si está utilizando UIViewControllerContainment
hay algunos otros métodos que vale la pena analizar.
Cuando desea que un controlador de la vista infantil controle la presentación de la barra de estado (es decir, si el niño está colocado en la parte superior de la pantalla).
en 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
}
}
Cambiando el estilo de la barra de estado para toda la aplicación.
RÁPIDO:
Paso 1:
En su Info.plist agregue el siguiente atributo:
View controller-based status bar appearance
y establece su valor en
NO
como se describe en la siguiente imagen:
Paso 2:
En su archivo AppDelegate.swift , en el método didFinishLaunchingWithOptions
, agregue este código:
UIApplication.shared.statusBarStyle = .lightContent
o
UIApplication.shared.statusBarStyle = .default
La opción .lightContent establecerá el color de la barra de estado en blanco para toda la aplicación.
La opción .default establecerá el color de la barra de estado en el color negro original, para toda la aplicación.
C OBJETIVO:
Sigue el primer paso de la sección SWIFT . Luego agregue este código al archivo AppDelegate.m :
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
o
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];