2013-09-21 3 views
4

UIApplication.SharedApplication.SetStatusBarHidden (MonoTouch кода, но также относится и к Obj-C) делает работу для IOS 6, но для прошивки 7 мы должны:IOS 7 - Скрыть строка состояния на контроллере представления ребенка

  1. Invoke SetNeedsStatusBarAppearanceUpdate() на контроллер вида (например: контроллер представления, отображающий полноэкранное изображение)
  2. Переопределение PrefersStatusBarHidden() на том же контроллере.

Однако контроллер вида, упомянутый выше, встроен в навигационную панель, которая также встроена в меню выноса. Несмотря на то, что все встроенные контроллеры представлений добавляются в иерархию с использованием AddChildViewController(), попытка обновления строки состояния в контроллере дочернего представления не влияет.

Любые идеи?


EDIT

Window.RootViewController (Menu) 
|___ ViewControllerA (Navigation Bar) 
    |___ ViewControllerB (Actual View controller) 

ViewControllerB Где хочет, чтобы скрыть/показать строку состояния

+0

Похоже, что переопределение «ChildViewControllerForStatusBarHidden()» - это путь. –

ответ

1

Он не появляется совсем то, что вы пытаетесь сделать. Если вы просто хотите скрыть строку состояния во всех дочерних контроллерах просмотра, вы можете установить новое свойство plist UIViewControllerBasedStatusBarAppearance.

... Если вы хотите отказаться от такого поведения и установить в строке состояния стиль с помощью метода UIApplication statusBarStyle добавьте ключ UIViewControllerBasedStatusBarAppearance в Info.plist файла приложение, и придать ему значение NO.

Источник: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/Bars.html#//apple_ref/doc/uid/TP40013174-CH8-SW1

Источник является BTW очень хорошим справочником для всех видов информации, связанных с обработкой UINavigationBar и UIStatusBar в iOS7.

+0

Ссылка не работает! – Karsten

7

ViewControllerA должен переопределить childViewControllerForStatusBarСкрыть и вернуть ViewControllerB.

- (UIViewController *)childViewControllerForStatusBarHidden { 
    return _viewControllerB; 
} 
+0

Это правильный ответ. – Karmeye

Смежные вопросы