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

990

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 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?

Oleksandr Veremchuk
fuente
99
Este enlace tiene información interesante sobre este tema: doubleencore.com/2013/09/…
Adriano Lucas

Respuestas:

1380
  1. Ajuste el UIViewControllerBasedStatusBarAppearanceque YESen el archivo plist.

  2. En el viewDidLoadhacer 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 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())
Peter B. Kramer
fuente
78
No necesitaba el Paso 2.
Jason Moore
37
No parece estar funcionando en iOS 7 Beta 5 con Xcode5-DP5. preferredStatusBarStyle no parece ser llamado.
wilsontgh
18
UIViewControllerBasedStatusBarAppearance se cambia a Ver apariencia de barra de estado basada en el controlador en Xcode 5 GM seed
parilógico
42
Obtuve la respuesta para Xcode GM Seed: 1. En Info.plist, coloca Ver la apariencia de la barra de estado basada en el controlador como NO 2. En appDelegate, dentro del método appDidFinishLaunching, ingresa [[UIView apariencia] setTintColor: [UIColor whiteColor]];
Parilógico
101
UINavigationController es un caso especial, lo anterior no funcionará. Acabo de pasar horas rascándome la cabeza sobre esto. Vea aquí la solución: stackoverflow.com/a/19513714/505457
Tyson el
848

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

  1. Establecer View controller-based status bar appearancea NOen su Info.plist.
  2. Llamada [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Nota: Este método ha quedado en desuso en iOS9. Úselo preferredStatusBarStyleen el UIViewController en su lugar. (ver Apple Developer Library )

wilsontgh
fuente
16
Esta es una ruta mucho mejor y más fácil.
Mick Byrne
227
No es necesario codificar. Todo se puede hacer desde el plist: (1) establezca "Ver apariencia de la barra de estado basada en el controlador" en NO y (2) establezca "Estilo de barra de estado" en "Estilo negro opaco". (Los valores sin procesar son UIViewControllerBasedStatusBarAppearance -> NO y UIStatusBarStyle -> UIStatusBarStyleBlackOpaque)
SwiftArchitect
3
Tenga en cuenta que debe establecer el valor de info.plist relevante en NO para que esto funcione.
Abhi Beckert
99
@ 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
99
Este método ha quedado en desuso en iOS 9.
lostAtSeaJoshua
439

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

En su proyecto plist file:

  • Estilo de 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
Lucas
fuente
12
No sé si las cosas cambiaron, pero el valor UIStatusBarStyleLightContent no es reconocido por XCode, y no se encuentra en ninguna documentación ... Aunque parece funcionar.
Nathan H
55
Este también lo cambió en la pantalla de inicio, mientras que solo configurarlo en el navegador no ... ¡Felicitaciones!
viniciusnz
3
Definitivamente, la forma más fácil de hacer esto y, como se mencionó, también funciona en la pantalla de inicio.
7wonders
44
No hay nada llamado UIStatusBarStyleLightContenten plist infoSIN EMBARGO Transparent Blackque haga el mismo truco :) además, debes agregarlo View controller-based status bar appearanceya que originalmente no está allí y es todo lo que necesitas para que funcione :)
user1949873
45
Para gente perezosa como yo, copie y fallezca: <key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
Adam Waite
241

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

En Info.plist establezca 'Ver 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

Pradeep Mahdevu
fuente
10
Desaprobado en iOS 9.: - /
sudo make install
112

Para mí, no pasó nada con el uso de todas las cosas en las otras respuestas (y de otras fuentes / 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 en absoluto.

Ingrese la descripción de la imagen aquí

haraldmartin
fuente
3
En el dispositivo, ninguna de las respuestas anteriores funcionó para mí, excepto esta. Creo que dice todo sobre el nuevo sistema que debe establecer la barra de navegación en NEGRO para que el texto de la barra de estado sea BLANCO.
MrTJ
2
Después de luchar por muchas cosas, esto es lo que terminó funcionando. El estilo se estableció en predeterminado. Cambió esto y eliminó todos los demás hacks de la barra de estado y funciona.
Gujamin
1
Si no desea configurar todas sus barras de navegación en IB, también puede configurar su proxy de apariencia. [[Apariencia UINavigationBar] setBarStyle: UIBarStyleBlack];
Steve Moser
3
No funciona para mí en iOS7 Storyboard. ¿Parece que esto podría ser un efecto secundario de algo más?
Chris
Me gustaría confirmar que todas las respuestas anteriores tampoco me han funcionado. Después de la imagen, el texto de la barra de estado se ve blanco. Pero repito nuevamente, las RESPUESTAS anteriores con Xcode 6.2 y iOS 8.2 no funcionan.
Markus
98

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

En Info.plist, agregue una fila:

UIViewControllerBasedStatusBarAppearancey establezca el valor NO.

Luego, en AppDelegate didFinishLaunchingWithOptions, agregue estas filas:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
stepik21
fuente
Esta solución funcionó para mí, mientras que las anteriores no.
John Contarino
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
63

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: ingrese la descripción de la imagen aquí

& establece su tipo de valor en Boolean & value 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 configure el estilo de barra de estado preferido en.

ingrese la descripción de la imagen aquí

Eso es.

Ajinkya Patil
fuente
1
Me gustó tu enfoque! En mi caso, estaba tratando de descubrir cómo hacer que el estilo de la barra de estado sea ligero solo cuando es a pantalla completa (sin barra de navegación). Entonces, me di cuenta de que todas las demás pantallas deberían ajustarse al mismo estilo de luz. Entonces, una buena solución es establecer todo. ¡Gracias! (:
Igor 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 sea compatible con enlaces profundos, y cuando inicia la aplicación a través del enlace profundo, el vínculo de retroceso que aparece en la barra de estado desaparece.
Chitranshu Asthana
El mejor y más simple.
Amit Kumar
la mejor solución para mí: D
Gold Chicken
48

Solo dos pasos de la siguiente manera:

Paso 1:

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

UIViewControllerBasedStatusBarAppearance, establecer valor NO.

Paso 2:

En el proyecto AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{[application setStatusBarStyle:UIStatusBarStyleLightContent];}
folse
fuente
44
Me encanta esta respuesta porque es la primera vez que uso el
parámetro
Notación de puntos y sería perfecto;)
Rivera
43

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. Ajuste the UIViewControllerBasedStatusBarAppearancea NOla Info.plist.

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

Deniss Fedotovs
fuente
1
Los valores predeterminados de UIViewControllerBasedStatusBarAppearance parecen ser YES. "Las aplicaciones usan de manera predeterminada el nuevo sistema de administración de barra de estado basado en el controlador de vista. Para optar por esto, 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
1
¡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, método viewDidLoad si no desea que cambie.
Deniss Fedotovs
1
fantástico, este hizo el trabajo. Codificación simple y excelente.
Felipe
32

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

Mohit Padalia
fuente
No, esto simplemente hace que el color de la barra de navegación sea el mismo que el color del texto de la barra de estado. ¡Esto oculta el problema, no lo soluciona!
Wpearse el
2
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
29

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 administra su controlador de navegación:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Eso deberia ser todo lo que necesitas.

Matt Bernardo
fuente
Esta fue la única solución que funcionó para mí en una aplicación sin storyboard y sin xib. También debería ser útil para usuarios que no son del IB.
Johnny Sparks
2
Esto fue perfecto para mí cuando necesitaba configurar el estilo de manera diferente en cada controlador de vista
Ben
Si desea conservar "Ver la apariencia de la barra de estado basada en el controlador" en sí, este es el camino a seguir. ¡Gracias!
cloudsurfin
28

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í

fancoolo
fuente
2
Gracias, parece que solo su solución funciona con la última versión de IOS7
Dekel Maman el
Esta solución muestra la barra de estado mientras carga la aplicación, en la pantalla de inicio.
Juan Boero
Resolvió mis problemas en xCode 7.1. Ultima versión. Apple olvidó un par de piezas cruciales para hacer que algo funcione. De nuevo.
Michael
22

En AppDelegate.m, agregue lo siguiente.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

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

neo D1
fuente
20

Simplemente en Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Vivek Sehrawat
fuente
55
La única respuesta que realmente funcionó para mí.
Wim Haanstra
66
Pero para esto tenemos que optar por no ver la apariencia de la barra de estado basada en el controlador .
iamyogish
Desaprobado en iOS9
Dimitris
20

Bueno, esto realmente funciona como un pedazo de pastel para mí.

Ve a tu aplicación info.plist.

  1. Establecer View controller-based status bar appearanceenNO
  2. Establecer Status bar styleenUIStatusBarStyleLightContent

Luego, vaya al delegado de su aplicación y pegue el siguiente código donde configure 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. Me esta funcionando.

Shahid Iqbal
fuente
1
Creo que esta es la respuesta correcta (la parte de la lista) ... ¿por qué agregaría código estático en didfinishlaunchingwithoptions? Si necesita el mismo color para toda la aplicación, esta es la forma correcta
usuario2387149
20
  1. Ve a Project-> Target,

  2. Luego configúrelo Status Bar Styleen Light. Hace que la barra de estado sea blanca desde la pantalla de inicio. Configuración del proyecto

  3. Luego establecer View controller-based status bar appearanceigual a NOen Info.plist.

Wanbok Choi
fuente
2
La segunda parte en la que se establece el real View controller-based status bar appearance equala NOera la pieza que faltaba. Gracias
Will
18

Cambio en la información PLIST En Swift 3 es muy fácil solo con 2 pasos. Vaya a su lista de información y cambie la clave View controller-based status bar appearancea "NO". Luego, en el Appdelegate, solo 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 en desuso en iOS9 ahora debería anular esta propiedad en el controlador de vista raíz

hacer esto ha quedado en desuso en iOS 9 debería hacerlo en el controlador rootview

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }
James Rochabrun
fuente
1
Es simplemente increíble hermano :) Gracias.
Naresh Reddy M
hacer esto ha quedado en desuso en iOS 9 debería hacerlo en el controlador de vista raíz anular var preferredStatusBarStyle: UIStatusBarStyle {return .lightContent}
James Rochabrun
17

iOS 7 permite que los controladores de vista individuales determinen la apariencia de la barra de estado, como se describe en la documentación del desarrollador 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 forma de cambiar dinámicamente el estilo de la barra de estado es implementar preferredStatusBarStyley, dentro de un bloque de animación, actualizar la apariencia y la llamada de la barra de estado setNeedsStatusBarAppearanceUpdate.

Establecer la apariencia de la barra de estado a nivel mundial es un proceso de dos pasos.

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

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 View controller-based status bar appearancepropiedad enInfo.plist .

Abra el Navegador de proyectos 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 appearanceen el campo Clave, luego asegúrese de que el campo Tipo esté configurado en Boolean. Finalmente, ingrese NOen 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 Stringy 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/

Josh Earl
fuente
Gracias. Mi problema fue que no vi que el tipo de "Ver la 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 despejó las cosas.
Chris Prince
12

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

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Mohit Tomar
fuente
Ponga esto en ViewController.m después de la implementación. ¡Es el más fácil y funciona genial! Gracias mohit
Phil Mulkins
12

Respuesta actualizada para Xcode GM Seed:

  1. En Info.plistponer View controller-based status bar appearancecomoNO

  2. En el proyecto, establezca:

    Ingrese la descripción de la imagen aquí

  3. En ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

parilógico
fuente
Eso cambió la barra de pestañas, no la barra de estado para mí.
Keith
11

Creo que todas las respuestas no apuntan realmente al problema porque todas ellas 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 interfaces 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 establecerá la barra de estado en blanco

ingrese la descripción de la imagen aquí

O hazlo en 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 del controlador:

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

Fawkes
fuente
explique su caso y trataré de ayudarlo
Fawkes
1
Tuve que agregar StatusBarIsIntiallyHidden = NO al plist así como ViewControllerBasedApplicationStatusBarAppearnce = NO al plist. Entonces esto funciona usando la primera parte
Michael
¿Tenía una pantalla de presentación 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 establecer la "Ocultar barra de estado" en falso y evitar tratar con su .plist. Bandera "StatusBarIsIntiallyHidden"
Fawkes
Yo no. Está utilizando el xib predeterminado generado.
Michael
En realidad, encontré este problema al crear un nuevo proyecto en xCode 7.1, por eso pensé que era tan extraño
Michael
10

Simplemente llamando

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

en el

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

El método de mis AppDelegatetrabajos es excelente para mí en iOS7.

Cagdas Altinkaya
fuente
Wow, mucha mierda aquí, pero esta respuesta funcionó para mí. Estoy usando Xcode 6 y iOS 8 SDK
Ethan Parker
1
Excelente, funciona para mí en iOS 9 conView controller-based status bar appearance = NO
dstudeba
9

Esto está documentado en la Guía de transición de la interfaz de usuario de iOS 7 , a la 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 unUIStatusBarStyle constante para especificar si el contenido de la barra de estado debe ser oscuro o claro:

UIStatusBarStyleDefaultMuestra contenido oscuro. [...]

UIStatusBarStyleLightContentMuestra 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 desde un controlador de vista individual y cambiarlo mientras se ejecuta la aplicación. Para optar por este comportamiento, agregue la UIViewControllerBasedStatusBarAppearanceclave al Info.plistarchivo de una aplicación y asígnele el valor YES.

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

Aaron Miller
fuente
3
Ya he probado [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!
Aaron Miller
1) establezca UIViewControllerBasedStatusBarAppearance en YES en el plist 2) en viewDidLoad haga un [self setNeedsStatusBarAppearanceUpdate]; 3) agregue el siguiente método :-( UIStatusBarStyle) preferredStatusBarStyle {return UIStatusBarStyleLightContent; }
Peter B. Kramer
9

Aquí están las pautas / instrucciones de Apple sobre el cambio de la barra de estado. Solo oscuro y claro (mientras que negro) están permitidos en 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 de vista del controlador, 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 viewDidLoad add - setNeedsStatusBarAppearanceUpdate

  3. anule preferredStatusBarStyle 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. ingrese la descripción de la imagen aquí


Aquí hay un truco hacky para cambiar / 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
8

Hice algunas cosas diferentes y me funciona.

Sin cambios en el código, configuré mi archivo .plist así:

  • 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 de Métricas simuladas de la "barra de estado", en el guión gráfico, de "inferido" a "Contenido ligero"

Felipe Antonio Cardoso
fuente
8

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 su barra de estado será blanco :-)!

fraxool
fuente
8

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

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
eirik
fuente
Barra de navegación! = Barra de estado.
Michael Peterson
... ¿¡Lo intentaste!? (Y sí, para la barra de estado)
Eirik
7

En Plist, agregue esto:

  • Estilo de barra de estado: UIStatusBarStyleLightContent
  • Ver la apariencia de la barra de estado basada en el controlador: NO
Ramdhas
fuente
7

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

parvind
fuente
2
ganador ganador cena de pollo
tommybananas
7

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 Métricas simuladas en el lado derecho, no funcionará y no sé por qué. Debería funcionar cambiando así, pero de cualquier manera.

En segundo lugar, no encontrará la propiedad UIViewControllerBasedStatusBarAppearance en su plist, pero de forma predeterminada no está allí. Debe agregarlo usted mismo haciendo clic en el botón + y luego configúrelo en NO.

color de texto de la barra de estado de ios 7

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!

Amit Shelgaonkar
fuente
Este método está en desuso en iOS 9
Trung Bui