UIImagePickerController против строки состояния iOS8
Я подкласс UIImagePickerController
при попытке переопределить поведение строки состояния по умолчанию и смешанные результаты. Мое приложение использует внешний вид строки состояния на основе контроллера.
Без подклассов я обнаружил, что он меняет стиль строки состояния на Default
(темный), когда сборщик отклонен, и ничто из того, что я пробовал в моем первоначальном контроллере вида, не исправляет его. Кроме того, когда средство выбора скрывает строку состояния во время ее представления, сдвигая ее вверх, панель навигации начального вида контроллера поднимается вместе с ней с высоты 64 на 44.
Итак, я хочу, чтобы мой UIImagePickerController
подкласс, чтобы сохранить стиль строки состояния как LightContent
и, пытаясь обойти скользящую панель навигации, сохраняйте строку состояния, отображающуюся во время представления средства выбора, а затем скрывайте ее viewDidAppear:
,
Первая интересная вещь заключается в том, что preferredStatusBarStyle
а также prefersStatusBarHidden
в моем подклассе сборщика не вызывали вообще, пока я тоже не переборщил childViewControllerForStatusBarStyle
а также childViewControllerForStatusBarHidden
вернуть ноль. Это, кажется, указывает на то, что обычно UIImagePickerController
переопределяет их, возможно, для возврата внутреннего дочернего контроллера представления. Глядя на иерархию представлений в viewDidAppear:
есть ребенок PLImagePickerCameraView
и вполне вероятно, что есть контроллер, чтобы пойти с ним. К сожалению, мы не можем переопределить этот контроллер.
Переопределение тех childViewControllerFor...
методы, preferredStatusBarStyle
а также prefersStatusBarHidden
меня называют промежуточным звеном viewWillAppear:
а также viewDidAppear:
и действительно может держать строку состояния видимой и LightContent
, Вторая интересная вещь заключается в том, что до presentViewController
В анимации строка состояния кратковременно мигает темным цветом. Никаких дополнительных звонков setNeedsStatusBarAppearanceUpdate
в viewWillAppear:
или другие места, такие как viewDidLoad:
кажется, чтобы предотвратить это.
Третьим интересным моментом является то, что стиль бара все еще становится темным во время увольнения, и никаких дополнительных звонков setNeedsStatusBarAppearanceUpdate
в сборщике viewWillDisappear:
или же viewDidDisappear:
кажется, чтобы предотвратить это.
tl; dr - я обнаружил, что переопределение UIImagePickerController
скрывать и показывать строку состояния по требованию, чтобы работать довольно хорошо, но установка стиля панели проблематична. Что-то в классе сборщика или UINavigationController
сам автоматически предпочитает Default
стиль бара, и когда его переключают на увольнение, кажется, его трудно переключить обратно.
Я видел, как вопрос UIImagePickerController нарушает внешний вид строки состояния, и ничто из того, что я там видел, еще не помогло, а iOS8.1 не исправляет это. Я был уверен, что установка сборщика navigationBar.barStyle
чтобы черные сделали это, но не играли в кости. Есть идеи кто-нибудь?
(Также любые советы по предотвращению UINavigationController
навигационная панель от скольжения до 44 высоты, когда строка состояния скрыта, было бы полезно thx)