Ich hatte dieses Problem und konnte es lösen, indem ich einfach eine einzelne Delegatenfunktion implementierte. Der Hintergrund meiner Statusleiste ist schwarz, daher lautet UIStatusBarStyle für meine Anwendung .LightContent. Als ich den UIImagePickerController vorstellte, um ein Foto aus dem Gerätespeicher auszuwählen, war die Statusleiste in Ordnung. Beim Klicken in ein Verzeichnis wie "Kamerarolle" oder "Favoriten", das effektiv auf den Navigationsstapel verschoben wurde, verschwand die Statusleiste. Bei der Auswahl eines Fotos gab es überhaupt keine Statusleiste. Beim Entfernen eines anderen Modal View Controllers war nur die Batterie vorhanden, was darauf hinweist, dass der Rest der Statusleiste möglicherweise ebenfalls schwarz ist.
Ich habe einige der anderen Lösungen ausprobiert, z. B. die Erweiterung von UIImagePickerController, aber in Swift können Sie die Verwendung von Erweiterungen nicht überschreiben. Ich habe dann versucht, UIImagePickerController in eine Unterklasse zu unterteilen, die Statusleiste in viewWillAppear () auszublenden und die Statusleiste in viewWillDisappear auszublenden. Ich konnte sehen, wie die Statusleiste mit einer .Slide-Animation ausgeblendet wurde, aber da die Statusleiste bei Auswahl eines Verzeichnisses unsichtbar war, konnte ich die Statusleiste nicht einblenden sehen. Wieder kam die grüne Batterie mit dem Rest der Statusleiste zurück, der beim Entlassen eines Modal View Controllers unsichtbar war. Ich habe auch versucht, prefersStatusBarHidden () zu überschreiben, aber diese Funktion wurde nie aufgerufen. Deshalb habe ich versucht, setNeedsStatusBarAppearanceUpdate () aufzurufen, um sicherzustellen, dass prefersStatusBarHidden () vom System aufgerufen wird, aber immer noch nicht aufgerufen wird. Ebenfalls, Es gibt den Vorschlag, die Statusleiste so einzustellen, dass sie in der Delegatmethode navigationController willShowViewController ausgeblendet wird. Dies bedeutet wiederum nur, dass die Statusleiste ausgeblendet wird, wodurch das Problem nicht gelöst wird. Wie sich herausstellt, scheint sich der Stil der Statusleiste beim Drücken auf den Navigationsstapel des UIImagePickerController zu ändern. Um das Problem vollständig zu lösen, musste ich keine Erweiterungen oder Unterklassen UIImagePickerController schreiben. Sie müssen lediglich den Delegaten und den Statusleistenstil so einstellen, dass er unverändert bleibt. Dieser Zusatz machte es so, als ob das Problem nie existierte. Es scheint, dass der Stil der Statusleiste beim Drücken auf den Navigationsstapel des UIImagePickerController geändert wird. Um das Problem vollständig zu lösen, musste ich keine Erweiterungen oder Unterklassen UIImagePickerController schreiben. Sie müssen lediglich den Delegaten und den Statusleistenstil so einstellen, dass er unverändert bleibt. Dieser Zusatz machte es so, als ob das Problem nie existierte. Es scheint, dass der Stil der Statusleiste beim Drücken auf den Navigationsstapel des UIImagePickerController geändert wird. Um das Problem vollständig zu lösen, musste ich keine Erweiterungen oder Unterklassen UIImagePickerController schreiben. Sie müssen lediglich den Delegaten und den Statusleistenstil so einstellen, dass er unverändert bleibt. Dieser Zusatz machte es so, als ob das Problem nie existierte.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}