J'ai donc eu ce problème et j'ai pu le résoudre en implémentant simplement une seule fonction de délégué. L'arrière-plan de ma barre d'état est noir, et donc UIStatusBarStyle pour mon application est .LightContent. Lorsque j'ai présenté UIImagePickerController pour sélectionner une photo dans le stockage de l'appareil, la barre d'état était bien. Cependant, en cliquant dans un répertoire tel que "Pellicule" ou "Favoris", poussant effectivement sur la pile de navigation, la barre d'état a disparu. Lors de la sélection d'une photo, il n'y avait pas du tout de barre d'état; lors du rejet d'un autre contrôleur de vue modale, seule la batterie était présente, indiquant que le reste de la barre d'état peut également être noir.
J'ai essayé certaines des autres solutions telles que l'extension de UIImagePickerController, mais dans Swift, vous ne pouvez pas remplacer l'utilisation d'extensions. J'ai ensuite essayé de sous-classer UIImagePickerController et essayé de masquer sa barre d'état sur viewWillAppear () et d'afficher la barre d'état sur viewWillDisappear. J'ai pu voir la barre d'état se cacher avec une animation .Slide, mais comme la barre d'état était invisible lors de la sélection d'un répertoire, je n'ai pas pu voir la barre d'état s'afficher. Encore une fois, la batterie verte est revenue avec le reste de la barre d'état invisible lors du rejet d'un contrôleur de vue modale. J'ai également essayé de remplacer prefersStatusBarHidden (), mais cette fonction n'a jamais été appelée, j'ai donc essayé d'appeler setNeedsStatusBarAppearanceUpdate () pour m'assurer que prefersStatusBarHidden () est appelé par le système, mais il n'est toujours pas appelé. Aussi, il est suggéré de définir la barre d'état à masquer sur la méthode déléguée navigationController willShowViewController. Encore une fois, tout cela ne fait que masquer la barre d'état, ce qui ne résout pas le problème. En fin de compte, il semble que le style de la barre d'état soit modifié lors de la poussée sur la pile de navigation de UIImagePickerController. Pour résoudre entièrement le problème, je n'ai pas eu à écrire d'extensions ou de sous-classe UIImagePickerController. Tout ce que vous avez à faire est de définir le délégué et de définir le style de la barre d'état pour qu'il reste le même. Cet ajout a fait comme si le problème n'avait jamais existé. il semble que le style de la barre d'état soit modifié lors de la poussée sur la pile de navigation de UIImagePickerController. Pour résoudre entièrement le problème, je n'ai pas eu à écrire d'extensions ou de sous-classe UIImagePickerController. Tout ce que vous avez à faire est de définir le délégué et de définir le style de la barre d'état pour qu'il reste le même. Cet ajout a fait comme si le problème n'avait jamais existé. il semble que le style de la barre d'état soit modifié lors de la poussée sur la pile de navigation de UIImagePickerController. Pour résoudre entièrement le problème, je n'ai pas eu à écrire d'extensions ou de sous-classe UIImagePickerController. Tout ce que vous avez à faire est de définir le délégué et de définir le style de la barre d'état pour qu'il reste le même. Cet ajout a fait comme si le problème n'avait jamais existé.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}