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?

  1. Establezca UIViewControllerBasedStatusBarAppearance en YES en el archivo .plist.

  2. En viewDidLoad haga un [self setNeedsStatusBarAppearanceUpdate];

  3. Agregue el siguiente método:

     - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } 

Nota : Esto no funciona para controladores dentro de UINavigationController , por favor vea el comentario de Tyson a continuación 🙂

Swift 3 – Esto funcionará con controladores dentro de UINavigationController . Agrega este código dentro de tu controlador.

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

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

  1. Establezca la View controller-based status bar appearance en NO en su Info.plist .
  2. Llamar a [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nota: Este método ha quedado obsoleto en iOS9. Utilice preferredStatusBarStyle en el UIViewController en su lugar. (ver Apple Developer Library )

¡Puedes 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 a través de toda la aplicación

En tu proyecto plist file:

  • Estilo de barra de estado: estilo 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

Nota: la mayoría de las respuestas con votos arriba no funcionan para iOS 7/8

En Info.plist establece ‘Ver aspecto de la barra de estado basado 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

Para mí, no pasó nada con el uso de todas las cosas en las otras respuestas (y de otras fonts / documentación). Lo que sí 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í

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

En Info.plist , agregue una fila:

UIViewControllerBasedStatusBarAppearance , y establecer el valor NO .

Luego, en AppDelegate en didFinishLaunchingWithOptions , agregue estas filas:

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

No necesitas hacer ningún código para esto

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

y establecer su tipo de valor en Boolean & value en NO. A continuación, haga clic en configuración del proyecto, luego haga clic en la pestaña General y en Información de implementación configure el estilo de la barra de estado preferido en. Encienda de la siguiente manera:

enter image description here

Eso es.

Solo dos pasos como los siguientes:

Paso 1:

En la pestaña Información del project target del project target , Agregar fila:

UIViewControllerBasedStatusBarAppearance , configure el valor NO .

Paso 2:

En el proyecto AppDelegate.m :

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

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. Establezca the UIViewControllerBasedStatusBarAppearance en NO en Info.plist .

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

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

 -[UINavigationBar setBarStyle:UIBarStyleBlack] 

La respuesta original está aquí

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

Si tiene un controlador de navegación integrado creado a través de Interface Builder , 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.

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

Esto es lo que hice, y funciona:

info.plist:

Ingrese la descripción de la imagen aquí

En AppDelegate.m, agregue lo siguiente.

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

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

Simplemente en Appdelegate

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

Bueno, esto realmente está funcionando como un pedazo de pastel para mí.

Ve a la información de tu aplicación.

  1. Establezca la View controller-based status bar appearance en NO
  2. Establecer el Status bar style en UIStatusBarStyleLightContent

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

 #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í.

  1. Vaya a Project -> Target ,

  2. A continuación, establezca Status Bar Style en Light . Hace que la barra de estado sea blanca desde la pantalla de inicio. Configuración del proyecto

  3. Luego, configure la View controller-based status bar appearance como NO en Info.plist .

iOS 7 permite a los controladores de vista individuales determinar la apariencia de la barra de estado, como se describe en la documentación del desarrollador de Apple:

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

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

En primer lugar, debe decirle a iOS que no desea establecer la apariencia de la barra de estado vista por imagen.

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

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

Abra Project Navigator y seleccione el proyecto para su aplicación iOS, luego seleccione la pestaña Información.

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

Ingrese View controller-based status bar appearance de la View controller-based status bar appearance en el View controller-based status bar appearance en el campo Clave, luego asegúrese de que el campo Tipo esté configurado 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 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/

Cambio en la información PLIST En Swift 3 es muy fácil solo con 2 pasos. Vaya a su info.plist y cambie la clave View controller-based status bar appearance a “NO”. Luego, en Appdelegate solo agrega esta línea en didfinishlaunchingwithoptions method

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

Respuesta actualizada para Xcode GM Seed:

  1. En Info.plist ponga la View controller-based status bar appearance como NO

  2. En el proyecto, establece:

    Ingrese la descripción de la imagen aquí

  3. En ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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

 - (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;} 

Creo que todas las respuestas realmente no apuntan al problema porque todas funcionan en escenarios específicos. Pero si necesita cubrir todos los casos, siga los siguientes puntos:

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 Pantalla de inicio) Vaya a la configuración de su proyecto Configuración 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) A continuación, establezca el estilo de la barra de navegación en “Negro”, porque esto significa que tendrá un fondo “negro” -> oscuro debajo de la barra de estado, por lo que establecerá la barra de estado en blanco

enter image description here

O hazlo en el código de la siguiente manera

 navigationController?.navigationBar.barStyle = UIBarStyle.Black 

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

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

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

Simplemente llamando

 [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack]; 

en el

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

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

Esto está documentado en la Guía de transición de la IU de iOS 7 , para la cual 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 a través de. […] Use una constante UIStatusBarStyle para especificar si el contenido de la barra de estado debe ser oscuro o claro:

UIStatusBarStyleDefault muestra contenido oscuro. […]

UIStatusBarStyleLightContent muestra contenido ligero. Úselo 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 de un controlador de visualización individual y cambiarlo mientras se ejecuta la aplicación. Para optar por este comportamiento, agregue la clave Info.plist archivo Info.plist una aplicación y Info.plist el valor YES .

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

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

 UINavigationBar.appearance().barStyle = .BlackTranslucent 

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

Hice algunas cosas diferentes y funciona para mí.

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

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

Espero que ayude.

editar

Para cada controlador de vista cambio la propiedad de métrica simulada de la “barra de estado” en el guión gráfico, de “inferido” a “contenido claro”

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

Déjame darte una respuesta completa a tu pregunta. Cambiar el color del texto de la barra de estado es muy fácil, pero es un poco confuso en iOS 7 especialmente para los novatos.

Si está tratando de cambiar el color de negro a blanco en Storyboard seleccionando el controlador de vista y yendo a Simulated Metrics en el lado derecho, no funcionará y no sé por qué. Debería funcionar cambiando así, pero de todos modos.

En segundo lugar, no encontrará la propiedad UIViewControllerBasedStatusBarAppearance en su plist, pero por defecto no está allí. Tienes que agregarlo tú mismo haciendo clic en el botón + y luego establecerlo en NO.

ios 7 color del texto de la barra de estado

Por último, debe ir a su archivo AppDelegate.m y agregar lo siguiente en el método didFinishLaunchingWithOptions, agregue la siguiente línea:

  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 

Esto cambiará el color a blanco para todos sus controladores de vista. ¡Espero que esto ayude!

Si aún desea utilizar la View controller-based status bar appearance en info.plist establecido en YES, lo que significa que puede cambiar la barra de estado para cada controlador de vista, use lo siguiente para texto blanco en la barra de estado en ViewDidLoad:

 [[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent]; 

Solo para resumir, edite su proyecto Info.plist y agregue:

View controller-based status bar appearance : NO

Status bar style : Opaque black style

o si tiene plist clave / valor sin procesar

UIViewControllerBasedStatusBarAppearance : NO

UIStatusBarStyle : Opaque black style

La clave para hacer que esto funcione es que solo el controlador de vista de pantalla completa puede dictar el estilo de la barra de estado.

Si está usando un controlador de navegación y desea controlar la barra de estado según el controlador de vista, querrá subclasificar UINavigationController e implementar preferredStatusBarStyle de modo que devuelva la preferencia de ViewController superior.

Asegúrese de cambiar la referencia de clase en su escena del guión gráfico deUINavigationController a su subclase (por ejemplo, MyNavigationController en el ejemplo a continuación).

(Lo siguiente me funciona. Si su aplicación está basada en TabBar, querrá hacer algo similar subclasificando el UITabBarController pero no lo he intentado).

 @interface MyNavigationController : UINavigationController @end @implementation MyNavigationController - (UIStatusBarStyle)preferredStatusBarStyle { return self.topViewController.preferredStatusBarStyle; } @end