Cómo cambiar el color del texto de la barra de estado en iOS

Mi aplicación tiene un fondo oscuro, pero en iOS 7 la barra de estado se volvió transparente. Así que no puedo ver nada allí, sólo el indicador verde de la batería en la esquina. ¿Cómo puedo cambiar el color del texto de la barra de estado a blanco como en la pantalla de inicio?

Solución
  1. Establezca el valor UIViewControllerBasedStatusBarAppearance como YES en el archivo .plist.

  2. En el viewDidLoad hacer un [self setNeedsStatusBarAppearanceUpdate];

  3. Añade el siguiente método:

     - (UIStatusBarStyle)preferredStatusBarStyle
     {
         return UIStatusBarStyleLightContent;
     }

Nota: Esto no funciona para los controladores dentro de UINavigationController, por favor, vea Tyson's comment below :)

Swift 3 - Esto funcionará con los controladores dentro de UINavigationController. Agregue este código dentro de su controlador.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5 y SwiftUI

Para SwiftUI cree un nuevo archivo swift llamado HostingController.swift.

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Entonces cambia las siguientes líneas de código en el SceneDelegate.swift.

window.rootViewController = UIHostingController(rootView: ContentView())

a

window.rootViewController = HostingController(rootView: ContentView())
Comentarios (18)

Esto está documentado en la Guía de transición de la interfaz de usuario de iOS 7, a la que se necesita un ID de desarrollador de Apple para acceder directamente. El extracto correspondiente:

Debido a que la barra de estado es transparente, la vista detrás de ella se muestra a través. [...] Utiliza una constante UIStatusBarStyle para especificar si el contenido de la barra de estado debe ser oscuro o claro:

UIStatusBarStyleDefault muestra el contenido oscuro. [...]

UIStatusBarStyleDefault muestra contenido oscuro UIStatusBarStyleLightContent muestra contenido claro. Se utiliza cuando el contenido oscuro está detrás de la barra de estado.

También puede ser de interés:

En iOS 7, puedes controlar el estilo de la barra de estado desde un controlador individual de vew y cambiarlo mientras se ejecuta la app. Para optar por este comportamiento, añada la clave UIViewControllerBasedStatusBarAppearance a un archivo Info.plist de la aplicación y dele el valor YES.

Definitivamente recomiendo echar un vistazo al documento, al que, de nuevo, puedes acceder con tu ID de desarrollador de Apple.

Comentarios (3)

Esto parece ser un problema con la versión actual de Xcode y iOS 7.

Algunos contenidos relacionados en Apple's Developer Forums es en una búsqueda de UIStatusBarStyleLightContent en "iOS 7 Beta Livability" en los foros de desarrolladores de Apple* (actualmente 32 mensajes).

Me encontré con él tratando de establecer a la versión de la luz.

(Esto es sólo un seguimiento de Aaron's respuesta).

Comentarios (0)