Cambiar el color del texto de la barra de estado en la pantalla de presentación de iOS 7

98

Sé que ya hay algunas preguntas de stackoverflow que dicen cómo cambiar la barra de estado para todos los controladores de vista. Actualmente estoy cambiando el color de la barra de estado de esta manera:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

En el application:DidFinishLaunching

Además, he cambiado el valor de UIViewControllerBasedStatusBarAppearanceen plist a NO. Sin embargo, en la pantalla de bienvenida todavía muestra el texto de la barra de estado con el color negro.

¿Es posible cambiar el color del texto de la barra de estado en la pantalla de bienvenida ?

Tiago Almeida
fuente
¿Qué quiere decir con 'todavía muestra la barra de estado con el color negro': si su código funciona, la fuente de la barra de estado debe ser blanca, el color de fondo de la barra de estado depende de su imagen de bienvenida (que ahora debe incluir la altura de la barra de estado - 20 píxeles)
Vinzzz
Lo siento, realmente extrañé la palabra de texto. Solo cambio el color del texto de la barra de estado. Puedo cambiarlo después de que aparece la pantalla de inicio, pero no puedo cambiarlo cuando se activa la pantalla de inicio.
Tiago Almeida

Respuestas:

224

En el archivo plist del proyecto, agregue la propiedad "Estilo de barra de estado" (la clave es UIStatusBarStyle). Luego, ignore todos los valores posibles enumerados en el menú desplegable para esta propiedad y escriba en su UIStatusBarStyleLightContentlugar.

Y usted no tiene que fijar UIViewControllerBasedStatusBarAppearancea NOen su plist, se puede establecer el preferredStatusBarStyleque desea a sus controladores de vista.

Vinzzz
fuente
¿Hay alguna forma de hacer esto compatible con una barra de estado teñida en iOS 6?
Rafael Nobre
1
El color del texto de la barra de estado es blanco o negro. El fondo de la barra proviene de su imagen de inicio, luego de la vista de su viewController si se extiende por debajo de las barras.
Vinzzz
1
Después de TONELADAS de métodos diferentes, este FINALMENTE funcionó (con UIViewControllerBasedStatusBarAppearance establecido en NO). Usted es un héroe.
Tamás Sengel
también puede hacerlo a través del código UIApplication.sharedApplication (). statusBarStyle = .LightContent. Lo hago en AppDelegate
Yasmin Tiomkin
@Yasmin: para cambiar de color DESPUÉS de la pantalla de inicio, esta solución ya era parte de la pregunta;)
Vinzzz
33

Puede hacer esto sin escribir ninguna línea de código
Haga lo siguiente para que el color del texto de la barra de estado sea blanco en toda la aplicación

En su archivo plist del proyecto :

  • Estilo de la barra de estado: UIStatusBarStyleLightContent
  • Ver la apariencia de la barra de estado basada en el controlador: NO
  • La barra de estado está inicialmente oculta: NO
Lucas
fuente
La respuesta aceptada es buena, pero no funcionó en todos mis controladores de vista sin hacer la segunda viñeta anterior. ¡Gracias!
Clifton Labrum
"Ver la apariencia de la barra de estado basada en el controlador: YES" todavía parece funcionar (iOS 9)
Nicolas Miari
19

Puede hacer lo siguiente para obtener una barra de estado de color claro en toda la aplicación.

  1. Seleccione el nombre del proyecto en el navegador de proyectos.
  2. Seleccione el nombre de un objetivo de la lista en la columna izquierda del editor del proyecto.
  3. Haga clic en General en la parte superior del editor de proyectos.
  4. Establecer estilo de barra de estado -> Luz

En su archivo plist agregue los siguientes valores:

  1. Estilo de la barra de estado - UIStatusBarStyleLightContent
  2. Ver la apariencia de la barra de estado basada en el controlador - NO

Esto le ayudará a obtener la barra de estado en color BLANCO en toda la aplicación, incluida la PANTALLA DE SALPICADURA.

Anooj VM
fuente
7

Establezca el UIViewControllerBasedStatusBarAppearanceen No en el plist

Luego agregue el siguiente código en la opción de inicio finalizado

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Por favor, siga este código, funcionó para mí.

Agustín Preejith
fuente
esto muestra texto blanco en la barra de estado mientras que mi fondo también es claro. ¿Cómo puedo mostrar texto en negro?
Mangesh
Mangesh on the Target, vaya a la configuración general, allí tendrá una opción para configurar el estilo de la barra de estado
Preejith augustine
De hecho, podría escribir esa primera línea un poco más simple usando la sintaxis de puntos, como esta: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Todd Lehman
2

Aquí están las Pautas / Instrucciones de Apple sobre el cambio de la barra de estado.

Aquí está: cómo cambiar el estilo de la barra de estado:

Si quieres estilo de barra de estado conjunto, a nivel de aplicación a continuación, establece UIViewControllerBasedStatusBarAppearanceque NOen su archivo `.Plist'.

Si desea establecer el estilo de la barra de estado, en el nivel del controlador de vista, siga estos pasos:

  1. Establezca UIViewControllerBasedStatusBarAppearancea YESen el .plistarchivo, si necesita establecer el estilo de la barra de estado solo en el nivel UIViewController.
  2. En la función add viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. anule favoriteStatusBarStyle en su controlador de vista.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Establezca el valor de .plist de acuerdo con el nivel de configuración del estilo de la barra de estado. ingrese la descripción de la imagen aquí


Puede establecer el color de fondo para la barra de estado durante el inicio de la aplicación o durante viewDidLoad de su controlador de 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
    }

}



Aquí está el resultado:

ingrese la descripción de la imagen aquí

Krunal
fuente
1

Puede hacer lo siguiente para obtener una barra de estado de color claro en toda la aplicación.

Seleccione el nombre del proyecto en el navegador de proyectos. Seleccione el nombre de un objetivo de la lista en la columna izquierda del editor del proyecto. Haga clic en General en la parte superior del editor de proyectos. Establecer estilo de barra de estado -> Luz

Usman Nisar
fuente