Итак, у меня была эта проблема, и я смог решить ее, просто реализовав одну функцию делегата. Фон моей строки состояния черный, поэтому UIStatusBarStyle для моего приложения - .LightContent. Когда я представил UIImagePickerController для выбора фотографии из хранилища устройства, строка состояния была в порядке. Однако при нажатии на каталог, такой как «Фотопленка» или «Избранное», при эффективном нажатии на стек навигации, строка состояния исчезает. При выборе фото вообще не было строки состояния; при отключении другого контроллера модального представления присутствовала только батарея, что указывает на то, что остальная часть строки состояния также может быть черной.
Я пробовал некоторые другие решения, такие как расширение UIImagePickerController, но в Swift вы не можете переопределить использование расширений. Затем я попытался создать подкласс UIImagePickerController и попытался скрыть его строку состояния на viewWillAppear () и отобразить строку состояния на viewWillDisappear. Мне удалось увидеть скрытие строки состояния с помощью анимации .Slide, но поскольку строка состояния была невидимой при выборе каталога, я не смог увидеть скрытую строку состояния. Опять же, зеленая батарея вернулась, а остальная часть строки состояния стала невидимой после закрытия модального контроллера представления. Я также попытался переопределить prefersStatusBarHidden (), но эта функция никогда не вызывалась, поэтому я попытался вызвать setNeedsStatusBarAppearanceUpdate (), чтобы убедиться, что система вызывает prefersStatusBarHidden (), но она все еще не вызывается. Также, предлагается скрыть строку состояния в методе делегата navigationController willShowViewController. Еще раз, все это скрывает строку состояния, что не решает проблему. Оказывается, похоже, что стиль строки состояния изменяется при нажатии на стек навигации UIImagePickerController. Чтобы решить проблему полностью, мне не пришлось писать расширения или подкласс UIImagePickerController. Все, что вам нужно сделать, это установить делегата и установить неизменный стиль строки состояния. Это добавление создало впечатление, будто проблемы никогда не существовало. кажется, что стиль строки состояния изменяется после нажатия на стек навигации UIImagePickerController. Чтобы полностью решить проблему, мне не пришлось писать расширения или подкласс UIImagePickerController. Все, что вам нужно сделать, это установить делегата и установить неизменный стиль строки состояния. Это добавление создало впечатление, будто проблемы никогда не существовало. кажется, что стиль строки состояния изменяется после нажатия на стек навигации UIImagePickerController. Чтобы решить проблему полностью, мне не пришлось писать расширения или подкласс UIImagePickerController. Все, что вам нужно сделать, это установить делегата и установить неизменный стиль строки состояния. Это добавление создало впечатление, будто проблемы никогда не существовало.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}