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)

0 ответов

Другие вопросы по тегам