Quindi ho avuto questo problema e sono stato in grado di risolverlo semplicemente implementando una singola funzione di delegato. Lo sfondo della mia barra di stato è nero, quindi UIStatusBarStyle per la mia applicazione è .LightContent. Quando ho presentato UIImagePickerController per selezionare una foto dalla memoria del dispositivo, la barra di stato andava bene. Tuttavia, facendo clic su una directory come "Rullino fotografico" o "Preferiti", spingendo efficacemente nello stack di navigazione, la barra di stato scompare. Dopo aver selezionato una foto, non c'era alcuna barra di stato; dopo aver eliminato un altro controller di visualizzazione modale, era presente solo la batteria, a indicare che anche il resto della barra di stato potrebbe essere nero.
Ho provato alcune delle altre soluzioni come l'estensione di UIImagePickerController, ma in Swift non è possibile eseguire l'override utilizzando le estensioni. Ho quindi provato a sottoclassare UIImagePickerController e ho cercato di nascondere la sua barra di stato su viewWillAppear () e di scoprire la barra di stato su viewWillDisappear. Sono stato in grado di vedere la barra di stato nascosta con un'animazione .Slide, ma poiché la barra di stato era invisibile durante la selezione di una directory, non ero in grado di vedere la barra di stato da scoprire. Ancora una volta, la batteria verde è tornata con il resto della barra di stato invisibile dopo aver eliminato un controller di visualizzazione modale. Ho anche provato a sovrascrivere prefersStatusBarHidden (), ma quella funzione non è mai stata chiamata, quindi ho provato a chiamare setNeedsStatusBarAppearanceUpdate () per assicurarmi che prefersStatusBarHidden () sia chiamato dal sistema, ma non viene ancora chiamato. Anche, vi è il suggerimento di impostare la barra di stato da nascondere sul metodo delegato navigationController willShowViewController. Ancora una volta, tutto ciò che fa è nascondere la barra di stato, che non risolve il problema. A quanto pare, sembra che lo stile della barra di stato cambi quando viene inserito nello stack di navigazione di UIImagePickerController. Per risolvere del tutto il problema, non ho dovuto scrivere estensioni o sottoclassi di UIImagePickerController. Tutto quello che devi fare è impostare il delegato e impostare lo stile della barra di stato in modo che rimanga lo stesso. Questa aggiunta ha reso come se il problema non fosse mai esistito. sembra che lo stile della barra di stato cambi quando viene inserito nello stack di navigazione di UIImagePickerController. Per risolvere del tutto il problema, non ho dovuto scrivere estensioni o sottoclassi di UIImagePickerController. Tutto quello che devi fare è impostare il delegato e impostare lo stile della barra di stato in modo che rimanga lo stesso. Questa aggiunta ha reso come se il problema non fosse mai esistito. sembra che lo stile della barra di stato cambi quando viene inserito nello stack di navigazione di UIImagePickerController. Per risolvere del tutto il problema, non ho dovuto scrivere estensioni o sottoclassi di UIImagePickerController. Tutto quello che devi fare è impostare il delegato e impostare lo stile della barra di stato in modo che rimanga lo stesso. Questa aggiunta ha reso come se il problema non fosse mai esistito.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}