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í, solo el indicador de batería verde en la esquina. ¿Cómo puedo cambiar el color del texto de la barra de estado a blanco como en la pantalla de inicio?

preguntado el 16 de julio de 13 a las 15:07

Mira mi nombre para una mejor solución stackoverflow.com/questions/17678881/… -

Xcode parece cambiar esto constantemente, por lo que recomiendo desplazarse hacia abajo para encontrar las soluciones más recientes (por ejemplo, Respuesta súper simple a partir de 2021). -

30 Respuestas

  1. Seleccione las UIViewControllerBasedStatusBarAppearance a YES en el archivo .plist.

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

  3. Agregue el siguiente método:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

Nota:: Esto no funciona para los controladores internos UINavigationController, Consulte El comentario de Tyson a continuación :)

Swift 3 - Esto funcionará con los controladores en el interior 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<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Luego cambie las siguientes líneas de código en el SceneDelegate.swift

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

a

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

Respondido 18 Jul 19, 11:07

No necesitaba el Paso 2. - Jason Moore

No parece estar funcionando en iOS 7 Beta 5 con Xcode5-DP5. PreferredStatusBarStyle no parece ser llamado. - wilson

UIViewControllerBasedStatusBarAppearance se cambia a Ver la apariencia de la barra de estado basada en el controlador en Xcode 5 GM seed - parilogo

Obtuve la respuesta para Xcode GM Seed: 1. En Info.plist, coloque Ver la apariencia de la barra de estado basada en el controlador como NO 2. En appDelegate, dentro del método appDidFinishLaunching, coloque [[Apariencia de UIView] setTintColor:[UIColor whiteColor]]; - parilogo

UINavigationController es un caso especial, lo anterior no funcionará. Acabo de pasar horas rascándome la cabeza sobre esto. Ver aquí para la solución: stackoverflow.com/a/19513714/505457 - Tyson

Alternativamente, puede optar por no mostrar la apariencia de la barra de estado basada en el controlador de vista:

  1. Kit View controller-based status bar appearance a NO en tu Info.plist.
  2. Llame a [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nota: este método ha quedado obsoleto en iOS9. Usar preferredStatusBarStyle en el UIViewController en su lugar. (ver Biblioteca de desarrolladores de Apple)

respondido 17 nov., 15:12

Esta es una ruta mucho mejor y más fácil. - mick byrne

No hay necesidad de codificar. Todo se puede hacer desde el plist: (1) configure "Ver la apariencia de la barra de estado basada en el controlador" en NO y (2) configure "Estilo de la barra de estado" en "Estilo negro opaco". (Los valores sin procesar son UIViewControllerBasedStatusBarAppearance -> NO y UIStatusBarStyle -> UIStatusBarStyleBlackOpaque) - SwiftArquitecto

Tenga en cuenta que debe: establezca el valor relevante de info.plist en NO para que esto funcione. - Abhi beckert

@gothicdev: buena captura. Aceptaría su respuesta ya que es la más limpia. La opción de luz para Bar Style podría ser: UIStatusBarStyleLightContent - benka

Este método ha quedado obsoleto en iOS 9. - LostAtSeaJoshua

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

En ti lista de proyectos archivo:

  • Estilo de la barra de estado: Transparent black style (alpha of 0.5)
  • Ver la apariencia de la barra de estado basada en el controlador: NO
  • La barra de estado está inicialmente oculta: NO

Respondido 04 Oct 16, 12:10

No sé si las cosas cambiaron, pero XCode no reconoce el valor UIStatusBarStyleLightContent y no se encuentra en ninguna documentación... Aunque parece funcionar. - nathan h

Este también lo cambió en la pantalla de inicio, mientras que simplemente configurarlo en el navegador no... ¡Felicitaciones! - viniciusz

Definitivamente la forma más fácil de hacer esto y, como se mencionó, también funciona en la pantalla de inicio. - 7 maravillas

no hay nada llamado UIStatusBarStyleLightContent en el capítulo respecto a la plist info SIN EMBARGO hay Transparent Black que hará el mismo truco :) además, debes agregar View controller-based status bar appearance ya que no está allí originalmente y es todo lo que necesita para que funcione :) - user1949873

Para la gente perezosa como yo, copie y pase: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> - Adán Waite

Nota: La respuesta más votada no funciona para iOS 7/8

En Info.plist, configure 'Ver la apariencia de la barra de estado basada en el controlador' como NO

En AppDelegate agregar

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

a

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ...
}    

Esta solución funciona para iOS 7/8.

Respondido 21 Oct 21, 18:10

Obsoleto en iOS 9. :-/- sudo make install

Para mí, no pasó nada con el uso de todas las cosas en las otras respuestas (y de otras fuentes/documentación). Lo que ayudó fue establecer el Estilo de la barra de navegación en "Negro" en el XIB. Esto cambió el texto a blanco sin ningún código.

Ingrese la descripción de la imagen aquí

Respondido el 14 de diciembre de 15 a las 14:12

En el dispositivo, ninguna de las respuestas anteriores funcionó para mí, excepto esta. Creo que dice todo sobre el nuevo sistema que tienes que configurar el barra de navegación a NEGRO para tener el barra de estado texto BLANCO. - Sr. TJ

Después de luchar con muchas cosas, esto es lo que terminó funcionando. El estilo se configuró por defecto. Cambié esto y eliminé todos los otros trucos de la barra de estado y funciona. - kudit

Si no desea configurar todas sus barras de navegación en IB, también puede configurar su proxy de apariencia. [[Apariencia de UINavigationBar] setBarStyle:UIBarStyleBlack]; - steve moser

No me funciona en iOS7 Storyboard. ¿Parece que esto podría ser un efecto secundario o algo más? - Chris

Me gustaría confirmar que todas las respuestas anteriores tampoco me han funcionado. Siguiendo la imagen, el texto de la barra de estado se ve blanco. Pero vuelvo a repetir, las RESPUESTAS anteriores con Xcode 6.2 e iOS 8.2 no funcionan. - Markus

Nada de eso funcionó para mí, así que aquí hay una solución que funciona ...

In Info.plist, agregue una fila:

UIViewControllerBasedStatusBarAppearancey establezca el valor NO.

Luego en AppDelegate en didFinishLaunchingWithOptions, agregue estas filas:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];

respondido 19 mar '15, 20:03

Esta solución funcionó para mí, mientras que las anteriores no. - Juan Contariño

Impresionante, pero este UIViewControllerBasedStatusBarAppearance se convierte en el mismo: Ver la apariencia de la barra de estado basada en el controlador automáticamente :) - Abhishek Thapliyal

No necesitas hacer ningún código para esto.

Debe agregar la tecla "Ver la apariencia de la barra de estado basada en el controlador" en info.plist de la siguiente manera: enter image description here

& establezca su tipo de valor en booleano & valor en NO. Luego haga clic en la configuración del proyecto, luego haga clic en la pestaña General y en Información de implementación establezca el estilo de barra de estado preferido en .Light de la siguiente manera:

enter image description here

Eso es.

Respondido 19 Feb 16, 10:02

¡Me gustó tu enfoque! En mi caso, estaba tratando de descubrir cómo hacer que el estilo de la barra de estado sea claro solo cuando está en pantalla completa (sin barra de navegación). Luego, me di cuenta de que todas las demás pantallas deberían ajustarse al mismo estilo de luz. Entonces, una buena solución es configurarlo todo. ¡Gracias! (: - Ígor de Lorenzi

Si no necesita cambiar esto nunca mientras su aplicación se está ejecutando. Este es el mejor enfoque. - Michael

Este enfoque definitivamente funciona, pero presenta un problema extraño en el iPad. En caso de que su aplicación admita enlaces profundos, y cuando inicie la aplicación a través de un enlace profundo, el vínculo de retroceso que aparece en la barra de estado desaparece. - Chitranshu Astaná

El mejor y más sencillo. - Amit Kumar

la mejor solución para mí :D - Pollo Dorado

Solo dos pasos de la siguiente manera:

Paso 1:

En la pestaña Información de la project target, Añadir fila:

UIViewControllerBasedStatusBarAppearance, valor ajustado NO.

Paso 2:

En el proyecto AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}

Respondido 01 Abr '14, 20:04

Me encanta esta respuesta porque es la primera vez que uso el parámetro "aplicación" )) - MUH Móvil Inc.

Notación de puntos y sería perfecto;) - Rivera

Esto funciona en Golden Master iOS 7 y Xcode 5 GM seed y iOS7 SDK lanzado el 18 de septiembre de 2013 (al menos con el controlador de navegación oculto):

  1. Kit the UIViewControllerBasedStatusBarAppearance a NO en el capítulo respecto a la Info.plist.

  2. In ViewDidLoad método o en cualquier lugar, ¿dónde desea cambiar el estilo de la barra de estado? [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Respondido el 21 de Septiembre de 13 a las 11:09

Los valores predeterminados de UIViewControllerBasedStatusBarAppearance parecen ser SÍ. "Las aplicaciones utilizan de forma predeterminada el nuevo sistema de gestión de la barra de estado basado en el controlador de vista. Para optar por no participar, agregue un valor de NO para la clave UIViewControllerBasedStatusBarAppearance a su Info.plist". [bgr.com/2013/09/10/ios-7-gm-change-log-release-notes/] - Zsolt

¡Ya! Después de configurar UIViewControllerBasedStatusBarAppearance en NO, la barra de estado se oculta en las vistas. - CashLee 李秉骏

¿Debería aplicarse a todos los viewdidload? - Arnlee Vizcayno

Puede agregarlo solo en el método appDelegates didFinishLoading. O en las primeras vistas del método viewDidLoad si no desea que cambie. - Denis Fedotovs

Fantástico, este hizo el trabajo. codificación simple y excelente. - Felipe

En caso de que su UIViewController esté dentro de un UINavigationController, deberá configurar BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

La respuesta original está aquí

https://devforums.apple.com/message/844264#844264

Respondido el 27 de Septiembre de 13 a las 09:09

No, esto simplemente hace que el color de la barra de navegación sea el mismo que el del texto de la barra de estado. ¡Esto oculta el problema, no lo soluciona! - pesado

En iOS7, la barra de estado imitará la UINavigationBar si la vista contiene un UINavigationController, por lo que, en muchos casos, esta es la respuesta correcta. - Jonstaff

Si tiene un controlador de navegación incorporado creado a través de interfaz del generador, asegúrese de configurar lo siguiente en una clase que administre su controlador de navegación:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Eso deberia ser todo lo que necesitas.

Respondido el 22 de Septiembre de 13 a las 17:09

Esta fue la única solución que funcionó para mí en una aplicación sin guión gráfico y sin xib. También debería ser útil para los usuarios que no son del IB. - johnny chispas

Esto fue perfecto para mí cuando necesitaba configurar el estilo de manera diferente en cada controlador de vista: paquet

Si desea mantener "Ver apariencia de la barra de estado basada en el controlador" establecido en sí, este es el camino a seguir. ¡Gracias! - Nubesurfin

Estoy usando Xcode 6 beta 5 en un rápido proyecto, para una aplicación iOS 7.

Esto es lo que hice, y funciona:

info.plist:

Ingrese la descripción de la imagen aquí

respondido 19 mar '15, 20:03

Gracias, parece que solo su solución funciona con la última versión de IOS7: Dekel Maman

Esta solución muestra la barra de estado mientras carga la aplicación, en la pantalla de inicio. - Juan boero

Resolví mis problemas en xCode 7.1. Ultima versión. Apple olvidó un par de piezas cruciales para que algo funcione. Otra vez. - Michael

  1. Ve a Project -> Target,

  2. Entonces establece Status Bar Style a Light. Hace que la barra de estado sea blanca desde la pantalla de inicio. Configuración del proyecto

  3. Entonces establece View controller-based status bar appearance igual a NO in Info.plist.

Respondido 02 ago 16, 13:08

La segunda parte en la que establece el real View controller-based status bar appearance equal a NO era la pieza que me faltaba. Gracias - se

perfecto, debería ser la mejor respuesta correcta en mi opinión. Gracias - Chris

Cambio en la información PLIST En Swift 3 es muy fácil solo con 2 pasos. Ve a tu info.plist y cambia la clave View controller-based status bar appearance a "NO". Luego, en Appdelegate simplemente agregue esta línea en el método didfinishlaunchingwithoptions

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

esto ha quedado obsoleto en iOS9 ahora debe anular esta propiedad en el controlador de vista raíz

hacer esto ha quedado obsoleto en iOS 9 debe hacer esto en el controlador de vista raíz

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }

Respondido el 05 de enero de 19 a las 02:01

Es simplemente increíble hermano :) Gracias. - Naresh Reddy M

hacer esto ha quedado obsoleto en iOS 9 debe hacer esto en el rootviewcontroller invalidar var preferentStatusBarStyle: UIStatusBarStyle { return .lightContent } - james rochabrun

En AppDelegate.m, agregue lo siguiente.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

Y en el archivo Plist, configure 'Ver la apariencia de la barra de estado basada en el controlador' en NO.

respondido 19 mar '15, 19:03

Simplemente en el delegado de la aplicación:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

In Swift 5, Siga los pasos a continuación:

  1. Agregar clave UIViewControllerBasedStatusBarAppearance y establecer el valor de false en Info.plist
  2. Agregar clave UIStatusBarStyle y establecer el valor de UIStatusBarStyleLightContent

Respondido el 21 de diciembre de 21 a las 20:12

La única respuesta que realmente funcionó para mí. - Wim Haanstra

Pero para esto tenemos que optar por no participar Ver la apariencia de la barra de estado basada en el controlador . - iamyogish

Obsoleto en iOS9 - Dimitris

Bueno, esto realmente está funcionando como pan comido para mí.

Ve a la de tu aplicación info.plist.

  1. Kit View controller-based status bar appearance a NO
  2. Kit Status bar style a UIStatusBarStyleLightContent

Luego vaya al delegado de su aplicación y pegue el siguiente código donde configura el RootViewController de Windows.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

Bingo. Está funcionando para mí.

respondido 19 mar '15, 20:03

creo que esta es la respuesta correcta (la parte del plist)... ¿por qué agregaría un código estático al finalizar el lanzamiento con opciones...? Si necesita el mismo color para toda la aplicación, esta es la forma correcta: user2387149

iOS 7 permite que los controladores de vista individuales determinen la apariencia de la barra de estado, como se describe en la documentación para desarrolladores de Apple:

iOS 7 ofrece a los controladores de vista la capacidad de ajustar el estilo de la barra de estado mientras se ejecuta la aplicación. Una buena manera de cambiar el estilo de la barra de estado dinámicamente es implementar preferredStatusBarStyle y, dentro de un bloque de animación, actualice la apariencia de la barra de estado y llame setNeedsStatusBarAppearanceUpdate.

Configurar la apariencia de la barra de estado globalmente es un proceso de dos pasos.

Primero, debe decirle a iOS que no desea configurar la apariencia de la barra de estado vista por vista.

Luego, debe hacerse cargo y configurar el nuevo estilo de barra de estado global.

Para deshabilitar el control de la barra de estado vista por vista, deberá configurar el View controller-based status bar appearance propiedad en Info.plist.

Abra el Navegador de proyectos y seleccione el proyecto para su aplicación iOS, luego seleccione la pestaña Información.

Pase el cursor sobre una fila, luego haga clic en el signo más que aparece para agregar una nueva propiedad a su .plist.

Enviar View controller-based status bar appearance en el campo Clave, luego asegúrese de que el campo Tipo esté establecido en Boolean. Finalmente, ingrese NO en el campo Valor.

Para establecer un estilo global para la barra de estado, agregue otra propiedad en la pestaña Información con una clave de Status bar style, un tipo de String y un valor de Opaque black style.

Aquí hay una publicación de blog con un poco más de detalle y un código de muestra:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

Respondido el 10 de diciembre de 13 a las 13:12

Gracias. Mi problema fue que no vi que el tipo de "Ver apariencia de la barra de estado basada en el controlador" estaba configurado en Cadena. Editar el archivo .plist "a mano" y poner el valor booleano aclaró las cosas. - principe chris

Xcode parece cambiar esto constantemente, así que este es el último.

A partir de 2021: Swift 5, Xcode 12

Para cambiar la barra de estado a blanca:

  1. Abra su Info.plist.
  2. Agregar clave UIViewControllerBasedStatusBarAppearance y establecer el valor de No (falso). La versión legible por humanos de esto es "View controller-based status bar appearance".
  3. Agregar clave UIStatusBarStyle y establecer el valor de UIStatusBarStyleLightContent (Es decir, "Light Content").

Respondido el 21 de diciembre de 21 a las 20:12

Esto funcionó para mí y fue el más fácil de seguir. - Familia tipográfica

Respuesta actualizada para Xcode GM Seed:

  1. In Info.plist poner View controller-based status bar appearance as NO

  2. En el proyecto, establezca:

    Ingrese la descripción de la imagen aquí

  3. En ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

respondido 19 mar '15, 20:03

Eso cambió la barra de pestañas, no la barra de estado para mí. - Keith

No es necesario hacer algo adicional, solo escriba este código en su viewController y obtenga el color blanco de la barra de estado

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}

Respondido el 27 de Septiembre de 13 a las 09:09

Ponga esto en ViewController.m después de la implementación. ¡Es el más fácil y funciona muy bien! ¡Gracias Mohit! - phil mulkins

Creo que todas las respuestas realmente no señalan el problema porque todas funcionan en escenarios específicos. Pero si necesita cubrir todos los casos, siga los puntos a continuación:

Dependiendo de dónde necesite el estilo de luz de la barra de estado, siempre debe tener en cuenta estos 3 puntos:

1) Si necesita la barra de estado en la pantalla de inicio o en otros lugares, donde no puede controlarla (no en los controladores de vista, sino en algunos elementos/momentos controlados por el sistema como la pantalla de inicio) Vas a la configuración de tu proyecto Ajustes del proyecto

2) si tiene un controlador dentro de un controlador de navegación Puede cambiarlo en el generador de interfaz de la siguiente manera:

a) Seleccione la barra de navegación de su controlador de navegación Seleccione la barra de navegación de su controlador de navegación

b) Luego configure el estilo de la barra de navegación en "Negro", porque esto significa que tendrá un fondo "negro" -> oscuro debajo de su barra de estado, por lo que configurará la barra de estado en blanco

enter image description here

O hazlo en código de la siguiente manera

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Si tiene el controlador solo que necesita tener su propio estilo de barra de estado y no está incrustado en alguna estructura de contenedor como UINavigationController

Configure el estilo de la barra de estado en código para el controlador:

Establecer el estilo de la barra de estado en el código

Respondido el 18 de Septiembre de 15 a las 17:09

por favor explícame tu caso e intentaré ayudarte - Fawkes

Tuve que agregar StatusBarIsIntiallyHidden = NO a la plist, así como ViewControllerBasedApplicationStatusBarAppearnce = NO a la plist. Entonces esto funciona usando la primera parte: Michael

¿Tenía una pantalla de inicio que tiene la misma "imagen" que el primer controlador de vista de carga? Y también, en la sección "Información" de su objetivo, puede intentar configurar la "Barra de estado oculta" en falso y evitar tener que lidiar con su .plist. Indicador "StatusBarIsIntiallyHidden" - Fawkes

Yo no. Está utilizando el xib predeterminado generado. - Michael

De hecho, encontré este problema al crear un proyecto nuevo en xCode 7.1, por lo que pensé que era tan extraño: Michael

Esta es Directrices/instrucciones de Apple sobre el cambio de la barra de estado. Solo oscuro y claro (mientras y negro) están permitidos en la barra de estado.

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

Si desea configurar el estilo de la barra de estado, el nivel de la aplicación, luego configure UIViewControllerBasedStatusBarAppearance a NO en su archivo `.plist'.

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

  1. Seleccione las UIViewControllerBasedStatusBarAppearance a YES en el capítulo respecto a la .plist archivo, si necesita establecer el estilo de la barra de estado solo en el nivel de UIViewController.
  2. En la función de agregar viewDidLoad - setNeedsStatusBarAppearanceUpdate

  3. anule el estilo de barra de estado preferido en su controlador de vista.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Establezca el valor de .plist según el nivel de configuración del estilo de la barra de estado. enter image description here


Aquí hay algunos trucos para cambiar/establecer el color de fondo de 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:

enter image description here

Respondido 17 Oct 17, 09:10

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

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

UIStatusBarStyleDefault muestra contenido oscuro. [...]

UIStatusBarStyleLightContent muestra contenido ligero. Utilícelo cuando el contenido oscuro esté detrás de la barra de estado.

También posiblemente de interés:

En iOS 7, puede controlar el estilo de la barra de estado desde un controlador de vista individual y cambiarlo mientras se ejecuta la aplicación. Para optar por este comportamiento, agregue el UIViewControllerBasedStatusBarAppearance clave de una aplicación Info.plist archivo y darle el valor YES.

Definitivamente recomendaría echar un vistazo al documento, al que, nuevamente, puede acceder con su ID de desarrollador de Apple.

Respondido 29 Abr '15, 13:04

Ya probé [aplicación setStatusBarStyle:UIStatusBarStyleLightContent]; pero en realidad nada cambia, el color del texto sigue siendo negro - Oleksandr Veremchuk

Me encantaría ser de más ayuda, pero como digo, no estoy lo suficientemente familiarizado con el proceso de desarrollo de iOS para saber qué sugerir. ¡Lo siento! - aarón molinero

1) establezca UIViewControllerBasedStatusBarAppearance en SÍ en el plist 2) en viewDidLoad haga un [self setNeedsStatusBarAppearanceUpdate]; 3) agregue el siguiente método:-(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } - Pedro B. Kramer

Simplemente llamando

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

en el capítulo respecto a la

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

método de mi AppDelegate funciona muy bien para mí en iOS7.

Respondido 25 Abr '14, 14:04

Wow, mucha basura aquí, pero esta respuesta funcionó para mí. Estoy usando Xcode 6 y iOS 8 SDK - ethan parker

Excelente, me funciona en iOS 9 con View controller-based status bar appearance = NO - dstudeba

En mi caso para Swift 5, agregué estas líneas:

override func viewDidAppear(_ animated: Bool) {
    navigationController?.navigationBar.barStyle = .black
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

respondido 01 mar '20, 12:03

PreferredStatusBarStyle no hizo nada sin embargo. .black puede ir en viewDidLoad muy bien. - Tilo Delau

Hice algunas cosas diferentes y funciona para mí.

Sin cambios en el código, configuré mi archivo .plist de esta manera:

  • Ver la apariencia de la barra de estado basada en el controlador > NO
  • Estilo de la barra de estado > UIStatusBarStyleLightContent (cadena simple)

Espero que ayude.

editar

Para cada controlador de vista, cambio la propiedad Métricas simuladas de la "barra de estado", en el guión gráfico, de "inferido" a "Contenido ligero"

Respondido el 20 de junio de 20 a las 10:06

en info.plist establezca el valor del campo NO Ver la apariencia de la barra de estado basada en el controlador y establecer barra de estado luz de estilo en objetivo > configuración general.

respondido 30 mar '15, 06:03

a ganar a ganar pollo para cenar - tommybananas

Solo para resumir, edite su proyecto Info.plist y añadir:

View controller-based status bar appearance : NO

Status bar style : Opaque black style

o si tiene una lista de clave/valor sin procesar

UIViewControllerBasedStatusBarAppearance : NO

UIStatusBarStyle : Opaque black style

Respondido 08 Oct 14, 15:10

esto funcionó para mí y es menos complicado que usar preferredStatusBarStyle ya que puede configurarlo globalmente (por supuesto, eso solo es útil si es apropiado para su caso) - nburk

Si desea obtener el mismo resultado con Swift, puede usar este código en su archivo AppDelegate.swift:

UINavigationBar.appearance().barStyle = .BlackTranslucent

¡Y el texto de su barra de estado será blanco :-)!

Respondido el 10 de enero de 16 a las 19:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.