Buscar..


Para barras de estado que no sean de UINavigationBar

  1. En info.plist configurar View controller-based status bar appearance en YES
  2. 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:

introduzca la descripción de la imagen aquí

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];


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow