Więc miałem ten problem i udało mi się go rozwiązać, po prostu implementując jedną funkcję delegata. Tło mojego paska stanu jest czarne, a więc UIStatusBarStyle dla mojej aplikacji to .LightContent. Kiedy przedstawiłem UIImagePickerController, aby wybrać zdjęcie z pamięci urządzenia, pasek stanu był w porządku. Jednak po kliknięciu katalogu, takiego jak „Rolka z aparatu” lub „Ulubione”, i efektywnym przeniesieniu na stos nawigacji, pasek stanu zniknął. Po wybraniu zdjęcia w ogóle nie było paska stanu; po odrzuceniu innego kontrolera widoku modalnego była obecna tylko bateria, co wskazuje, że pozostała część paska stanu może być również czarna.
Wypróbowałem kilka innych rozwiązań, takich jak rozszerzenie UIImagePickerController, ale w Swift nie można nadpisać za pomocą rozszerzeń. Następnie próbowałem podklasować UIImagePickerController i próbowałem ukryć jego pasek stanu w viewWillAppear () i odkryć pasek stanu w viewWillDisappear. Udało mi się zobaczyć ukrywanie paska stanu za pomocą animacji .Slide, ale ponieważ pasek stanu był niewidoczny po wybraniu katalogu, nie byłem w stanie wyświetlić paska stanu. Ponownie, zielona bateria wróciła, a reszta paska stanu była niewidoczna po zamknięciu kontrolera widoku modalnego. Próbowałem również przesłonić prefersStatusBarHidden (), ale ta funkcja nigdy nie została wywołana, więc próbowałem wywołać metodę setNeedsStatusBarAppearanceUpdate (), aby upewnić się, że system wywołuje metodę prefersStatusBarHidden (), ale nadal nie jest wywoływana. Również, istnieje sugestia, aby ustawić pasek stanu tak, aby był ukryty w metodzie delegata navigationController willShowViewController. Po raz kolejny wszystko to powoduje ukrycie paska stanu, co nie rozwiązuje problemu. Jak się okazuje, wydaje się, że styl paska stanu zmienia się po umieszczeniu na stosie nawigacyjnym UIImagePickerController. Aby całkowicie rozwiązać problem, nie musiałem pisać rozszerzeń ani podklasy UIImagePickerController. Wszystko, co musisz zrobić, to ustawić delegata i ustawić styl paska stanu na ten sam. Ten dodatek sprawił, że problem nigdy nie istniał. wydaje się, że styl paska stanu jest zmieniany po umieszczeniu na stosie nawigacyjnym UIImagePickerController. Aby całkowicie rozwiązać problem, nie musiałem pisać rozszerzeń ani podklasy UIImagePickerController. Wszystko, co musisz zrobić, to ustawić delegata i ustawić styl paska stanu na ten sam. Ten dodatek sprawił, że problem nigdy nie istniał. wydaje się, że styl paska stanu jest zmieniany po umieszczeniu na stosie nawigacyjnym UIImagePickerController. Aby całkowicie rozwiązać problem, nie musiałem pisać rozszerzeń ani podklasy UIImagePickerController. Wszystko, co musisz zrobić, to ustawić delegata i ustawić styl paska stanu na ten sam. Ten dodatek sprawił, że problem nigdy nie istniał.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}