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?


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())

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 )


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

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


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í


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];

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.


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];}

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];


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


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.


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í


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.


20

Simplemente en Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

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.


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.


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
 }

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/


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;}

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];


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


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.


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.


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í


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"


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 :-)!


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];

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

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.


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!


Este método está en desuso en iOS 9
Trung Bui
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.