3

Поскольку яблоко введенными UIViewControllerBasedStatusBarAppearance и preferredStatusBarStyle в прошивкой 7 Я пытаюсь понять, Что лучшие практики, чтобы изменить цвет строки состояния для встроенный вид контроллера, как:preferredStatusBarStyle для собственных контроллеров

UIImagePickerController 
MFMailComposeViewController 
UISearchDisplayController 

, например, при использовании UISearchDisplayController, я хочу изменить строку состояния от светлого до темного, когда появится панель поиска.
как я могу это сделать? мне нужен подкласс UISearchDisplayController? может быть категория?

, а что касается UIImagePickerController, у него есть собственный стек контроллеров, как можно изменить стиль строки состояния для всех из них при представлении подборщика фотографий?

я до сих пор используется глобальная почему из

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES]; 

но теперь его все за ViewController подход, так как я бы изменить контроллеры, которые не мое?

+0

UISearchDisplayController не является контроллером представления, и он устарел. Вы по-прежнему можете использовать 'preferredStatusBarStyle' на вашем контроллере представления исходного кода и возвращать стиль стиля статусов при вводе или выходе из поиска. Существует 'setNeedsStatusBarAppearanceUpdate', чтобы заставить UIKit повторно запросить стиль строки состояния. – Andy

+0

@ Энди, ты прав. Я не заметил, что его не является контроллером вида (я так полагаю, потому что он управляет собственным табличным представлением ..), и я должен использовать его, хотя его устарело, потому что я поддерживаю iOS 7, а также – Mario

ответ

1

Да, вы можете подклассифицировать эти классы, чтобы изменить внешний вид строки состояния. Согласно UIImagePickerController, это просто подкласс UINavigationController, поэтому, если вы подклассифицируете и реализуете preferredStatusBarStyle в вашем подклассе, все остальные виды, отображаемые в навигации, будут иметь одинаковую строку состояния. Удачи!

+0

. Это правильный способ фактически. – Andy

+0

Стоит добавить, что вы можете сделать то же самое с 'MFMailComposeViewController', независимо от того, что Apple говорит о его подклассификации, добавив метод отображения статуэтки не является преступлением. Он по-прежнему является контроллером представления независимо от портала внешнего процесса. – Andy

+0

Ярмарка и @ Энди почему бы не использовать категорию вместо подкласса? – Mario