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