Тож у мене виникла ця проблема, і я зміг її вирішити, просто реалізувавши одну функцію делегата. Фон мого рядка статусу чорний, тому UIStatusBarStyle для мого застосування є .LightContent. Коли я представив UIImagePickerController для вибору фотографії із сховища пристрою, рядок стану був нормальним. Однак, натиснувши на каталог, наприклад "Збірка камери" або "Вибране", ефективно натискаючи на навігаційний стек, рядок стану зник. Вибравши фотографію, зовсім не було рядка стану; після відхилення іншого контролера модального перегляду лише батарея, що вказує, що решта смуги стану також може бути чорною.
Я спробував деякі інші рішення, такі як розширення UIImagePickerController, але в Swift ви не можете змінити використання розширень. Потім я спробував підкласировать UIImagePickerController і спробував приховати його рядок стану на viewWillAppear () і приховати рядок стану на viewWillDisappear. Мені вдалося побачити панель стану приховати за допомогою анімації .Slide, але оскільки панель стану була невидимою при виборі каталогу, я не зміг побачити рядок стану. Знову зелений акумулятор повернувся з рештою панелі стану, невидимою після відключення контролера модального перегляду. Я також спробував переосмислити перевагуStatusBarHidden (), але цю функцію ніколи не викликали, тому я спробував викликати setNeedsStatusBarAppearanceUpdate (), щоб переконатися, що prefersStatusBarHidden () викликається системою, але вона все ще не називається. Також, є пропозиція встановити рядок стану прихованим методом делегата навігаціїController 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)
}