tutorial español ios swift statusbar

español - ¿Cómo cambio correctamente el estilo de la barra de estado en swift 2/iOS 9?



swift tutorial español (12)

Estoy intentando cambiar el estilo de mi barra de estado a .Light pero el código anterior que implementé en swift 1.2 parece que ya no funciona ... aquí está el código:

override func viewDidLoad() { super.viewDidLoad() UIApplication.sharedApplication().statusBarStyle = .LightContent }

ahora tengo mi configuración de View controller-based status bar appearance en SÍ, y al leer el documento UIKit, esto anulará cualquier cambio de estado de BarStyle y lo mantendrá en forma predeterminada. Sin embargo, cuando cambio la configuración a ''NO'' y cambio el statusBarStyle, obtengo este <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable en mi depurador ... ¿Entonces esto es un error en Xcode? porque para cambiar el estilo de la barra de estado, debe cambiar la configuración de info.plist a NO, pero cuando eso sucede ... error


¡Las respuestas existentes son geniales, pero ahora es un poco diferente con las nuevas actualizaciones!

override var ahora en lugar de override func para cualquiera que esté confundido: la esencia sigue siendo la misma y usted necesita cambiar su ''Info.plist'':

override var preferredStatusBarStyle: UIStatusBarStyle { //LightContent return UIStatusBarStyle.lightContent //Default //return UIStatusBarStyle.default }


Aún puedes usar preferredStatusBarStyle en tu controlador de vista:

paso 1: en info.plist establezca ViewControllerBasedStatusBarAppearance en YES. Paso 2: agregue este código al ViewController que desea editar:

override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }

*** Sugerencia: parece que solo funciona fuera de las funciones ViewDidLoad (), didReceiveMemoryWarning ().


Apple ha agregado la capacidad de cambiar el estilo de la barra de estado en la información de implementación. Simplemente elige ''Light''.

También configure la clave de View controller-based status bar appearance en NO en la Info.plist


Aquí prueba esto te puede ayudar

En primer lugar, vaya al archivo info.plist y agregue esta "Vista de la apariencia de la barra de estado basada en el controlador" como clave y establezca el valor como NO

Aquí abajo se muestra en la imagen.

después de esto, vaya al archivo AppDelegate.swift y UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent esta UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent línea de código en

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{ UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent return true }

Me gusta esto


El cambio en la información de implementación funciona, pero a pesar de que debe agregar la clave ''Ver apariencia de la barra de estado basada en el controlador'' para configurar el archivo en NO.


Para swift 3 sobrescribir la variable preferredStatusBarStyle usa esto:

override var preferredStatusBarStyle: UIStatusBarStyle{ return .lightContent }


Parece que es un error en Xcode 7.0. También me Error>: CGContextSaveGState: invalid context 0x0. el Error>: CGContextSaveGState: invalid context 0x0. error al configurar la View controller-based status bar appearance

Por ahora, simplemente estoy anulando el color de la barra de estado en cada controlador de vista.

override func preferredStatusBarStyle() -> UIStatusBarStyle { return .LightContent }


Puede elegir "light" en la información de implementación, pero también debe agregar la "Vista de la barra de estado basada en el controlador" y configurarlo en NO.


Si desea cambiarlo de vez en cuando dentro de su aplicación, puede usar las sustituciones preferredStatusBarStyle() como se mencionó anteriormente.

Solo asegúrese de llamar también a setNeedsStatusBarAppearanceUpdate() después de llamar preferredStatusBarStyle() , para informar a IOS sobre esto.


Siempre lo hice de esta manera.

class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } //Changing Status Bar override func preferredStatusBarStyle() -> UIStatusBarStyle { //LightContent return UIStatusBarStyle.LightContent //Default //return UIStatusBarStyle.Default } }

Funciona en cualquier versión swift 2.x. Esto requiere que configure View controller-based status bar appearance en el Info.plist en su archivo Info.plist en YES .


Swift 3 simplemente agrega la View controller-based status bar appearance con un valor NO a info.plist y luego agrega a ViewController donde desee:

UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent


También puede simplemente agregar esto en el AppDelegate. Esta opción es mejor si desea cambiarla para cada ViewController en la aplicación y no tiene que hacerla diferente para todas las demás VC.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { application.statusBarStyle = UIStatusBarStyle.LightContent // instead of // UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false) // which gives warning about deprecation in iOS 9 return true }