Каков правильный способ реализации строки состояния и навигационной панели, которая находится поверх UIView?
alt text http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png
Каков правильный способ реализации строки состояния и навигационной панели, которая находится поверх UIView?
alt text http://img.skitch.com/20081217-t78sdixk37hqgdh1ia2fgec4st.png
Просто установите "хочет полноэкранный макет" в вашем контроллере просмотра. Это решает проблему для меня.
self.wantsFullScreenLayout = YES;
На скриншоте выше есть полупрозрачная строка состояния и полупрозрачная панель навигации.
Строка состояния устанавливается с помощью
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent];
Панель навигации устанавливается с помощью
theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
Если у вас есть контроллер просмотра внутри контроллера навигации, и вы хотите скрыть строку состояния, чтобы ваше представление viewController отображалось в полноэкранном режиме, вы всегда можете вызвать:
[self.navigationController.view setNeedsLayout];
после скрытия строки состояния. Но я лично считаю, что
[self setWantsFullScreenLayout:YES];
- лучший способ.
Лучший способ, которым я пришел, заключался в следующем: при использовании "сложной" иерархии панели вкладок, содержащей навигационные контроллеры, с одним "подробным" представлением, являющимся полноэкранным представлением.
В делегате приложения перед представлением контроллера панели вкладок добавлено следующее:
tabBarController.view.frame = [[UIScreen mainScreen] bounds];
Это заставит контроллер панели вкладок покрыть весь экран, даже ниже области строки состояния. Я должен был компенсировать высоты нескольких просмотров до + 20 пикселей, в частности, навигационные панели.
Установите стиль панели состояния как черный полупрозрачный и стиль навигационной панели как черный полупрозрачный. Если вы используете навигационное приложение, в MainWindow.xib проверьте, что строка состояния скрыта, а панель навигации скрыта.
Когда пользователь коснется экрана, запустите таймер, чтобы увидеть, был ли это один кран или двойной кран. Если один кран, сделайте строку состояния и навигационную панель скрытой = НЕТ. и после прекращения активности пользователя снова запустите таймер. после некоторого времени отсутствия активности заставьте их снова спрятаться.
Шаг 1 Установите для UIViewControllerBasedStatusBarAppearance значение No в plist
Затем добавьте следующий код в опции завершения финализации
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
[application setStatusBarStyle:UIStatusBarStyleLightContent];
self.window.clipsToBounds =YES;
self.window.frame = CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}
Пожалуйста, следуйте этому коду, который сработал у меня