Así que tuve este problema y pude resolverlo simplemente implementando una sola función de delegado. El fondo de mi barra de estado es negro, por lo que UIStatusBarStyle para mi aplicación es .LightContent. Cuando presenté el UIImagePickerController para seleccionar una foto del almacenamiento del dispositivo, la barra de estado estaba bien. Sin embargo, al hacer clic en un directorio como "Camera Roll" o "Favoritos", empujando efectivamente a la pila de navegación, la barra de estado desapareció. Al seleccionar una foto, no había ninguna barra de estado; al descartar otro controlador de vista modal, solo estaba presente la batería, lo que indica que el resto de la barra de estado también puede estar en negro.
Probé algunas de las otras soluciones, como extender UIImagePickerController, pero en Swift, no puede anular el uso de extensiones. Luego intenté subclasificar UIImagePickerController e intenté ocultar su barra de estado en viewWillAppear () y mostrar la barra de estado en viewWillDisappear. Pude ver que la barra de estado se ocultaba con una animación .Slide, pero como la barra de estado era invisible al seleccionar un directorio, no pude ver la barra de estado oculta. Nuevamente, la batería verde volvió con el resto de la barra de estado invisible al descartar un controlador de vista modal. También intenté anular prefersStatusBarHidden (), pero esa función nunca se llamó, por lo que intenté llamar a setNeedsStatusBarAppearanceUpdate () para asegurarme de que el sistema llama a prefersStatusBarHidden (), pero todavía no se llama. También, existe la sugerencia de configurar la barra de estado para que se oculte en el método de delegado navigationController willShowViewController. Una vez más, todo lo que hace es ocultar la barra de estado, que no resuelve el problema. Como resultado, parece que el estilo de la barra de estado cambia al presionar sobre la pila de navegación del UIImagePickerController. Para resolver el problema por completo, no tuve que escribir extensiones o subclase UIImagePickerController. Todo lo que necesita hacer es configurar el delegado y configurar el estilo de la barra de estado para que permanezca igual. Esta adición hizo que el problema nunca existiera. parece que el estilo de la barra de estado cambia al presionar sobre la pila de navegación del UIImagePickerController. Para resolver el problema por completo, no tuve que escribir extensiones o subclase UIImagePickerController. Todo lo que necesita hacer es configurar el delegado y configurar el estilo de la barra de estado para que permanezca igual. Esta adición hizo que el problema nunca existiera. parece que el estilo de la barra de estado cambia al presionar sobre la pila de navegación del UIImagePickerController. Para resolver el problema por completo, no tuve que escribir extensiones o subclase UIImagePickerController. Todo lo que necesita hacer es configurar el delegado y configurar el estilo de la barra de estado para que permanezca igual. Esta adición hizo que el problema nunca existiera.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}