Então, eu tive esse problema e pude resolvê-lo simplesmente implementando uma única função de delegado. O fundo da minha barra de status é preto e, portanto, o UIStatusBarStyle para o meu aplicativo é .LightContent. Quando apresentei o UIImagePickerController para selecionar uma foto no armazenamento do dispositivo, a barra de status estava boa. No entanto, ao clicar em um diretório como "Rolo da câmera" ou "Favoritos", pressionando efetivamente a pilha de navegação, a barra de status desapareceu. Ao selecionar uma foto, não havia barra de status; ao descartar outro controlador de exibição modal, apenas a bateria estava presente, indicando que o restante da barra de status também pode estar preto.
Tentei algumas das outras soluções, como estender o UIImagePickerController, mas no Swift, você não pode substituir usando extensões. Tentei subclassificar UIImagePickerController e tentei ocultar sua barra de status em viewWillAppear () e mostrar novamente a barra de status em viewWillDisappear. Consegui ver a barra de status oculta com uma animação .Slide, mas como a barra de status estava invisível ao selecionar um diretório, não pude ver a barra de status reexibida. Mais uma vez, a bateria verde voltou com o restante da barra de status invisível ao descartar um controlador de exibição modal. Também tentei substituir preferersStatusBarHidden (), mas essa função nunca foi chamada, então tentei chamar setNeedsStatusBarAppearanceUpdate () para garantir que prefersStatusBarHidden () seja chamado pelo sistema, mas ainda não seja chamado. Além disso, existe a sugestão de definir a barra de status para ser oculta no método delegado navigationController willShowViewController. Mais uma vez, tudo isso faz é ocultar a barra de status, o que não resolve o problema. Como se vê, parece que o estilo da barra de status é alterado ao empurrar para a pilha de navegação do UIImagePickerController. Para resolver o problema completamente, não precisei escrever extensões ou subclasses UIImagePickerController. Tudo que você precisa fazer é definir o delegado e o estilo da barra de status para permanecer o mesmo. Esta adição tornou como se o problema nunca existisse. parece que o estilo da barra de status é alterado ao enviar para a pilha de navegação do UIImagePickerController. Para resolver o problema completamente, não precisei escrever extensões ou subclasses UIImagePickerController. Tudo que você precisa fazer é definir o delegado e o estilo da barra de status para permanecer o mesmo. Esta adição tornou como se o problema nunca existisse. parece que o estilo da barra de status é alterado ao enviar para a pilha de navegação do UIImagePickerController. Para resolver o problema completamente, não precisei escrever extensões ou subclasses UIImagePickerController. Tudo que você precisa fazer é definir o delegado e o estilo da barra de status para permanecer o mesmo. Esta adição tornou como se o problema nunca existisse.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}