Después de leer todas las sugerencias y probar algunas cosas, podría hacer que esto funcione para controladores de vista específicos utilizando los siguientes pasos:
Primer paso:
Abra su info.plist e inserte una nueva clave llamada " Ver la apariencia de la barra de estado basada en el controlador " en NO
Segundo paso (solo una explicación, no es necesario implementar esto):
Normalmente ponemos el siguiente código en la aplicación (_: didFinishLaunchingWithOptions :) método del AppDelegate,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
pero eso afecta el statusBarStyle
de todos los ViewControllers.
Entonces, cómo hacer que esto funcione para ViewControllers específicos: paso final:
Abra el archivo viewcontroller donde desea cambiar statusBarStyle
y coloque el siguiente código viewWillAppear()
,
Swift 2
UIApplication.sharedApplication().statusBarStyle = .LightContent
Swift 3
UIApplication.shared.statusBarStyle = .lightContent
Además, implemente el viewWillDisappear()
método para ese viewController específico y coloque las siguientes líneas de código,
Swift 2
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
}
Swift 3
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.shared.statusBarStyle = UIStatusBarStyle.default
}
Este paso primero cambiará el statusBarStyle
control de vista específico y luego lo volverá a cambiar default
cuando el controlador de vista específico desaparezca. No implementar el viewWillDisappear()
cambiará statusBarStyle
permanentemente al nuevo valor definido deUIStatusBarStyle.LightContent
Status bar is initially hidden = YES
archivo info.plist, "Ver apariencia de la barra de estado basada en el controlador = NO" hará que la barra de estado se oculte.