У меня есть приложение с панелью вкладок и панелью навигации для нормального взаимодействия. Один из моих экранов - это большая часть текста, поэтому я позволяю пользователю нажимать, чтобы перейти в полноэкранный режим (вроде как Photos.app).
Панель навигации и панель вкладок скрыты, и я установил полноэкранный режим просмотра текста. Проблема в том, что там, где раньше была панель вкладок, есть около 50 пикселей пустого пространства. Вы можете увидеть, если из этого снимка экрана:
удалена мертвая ссылка ImageShack
Я не уверен, что вызвало это. Пробел определенно не является видом позади текстового представления, поскольку я устанавливаю его цвет фона на красный, чтобы быть уверенным. Что может быть причиной этого?
** ОБНОВЛЕНИЕ **
Я провел некоторое тестирование на попадание в подклассе UIWindow и обнаружил, что пробел на самом деле является недокументированным / неопубликованным UILayoutContainerView. Это родительский вид tabBar. Я не думаю, что рекомендуется напрямую манипулировать этим видом, так как я могу скрыть панель вкладок?
** ОБНОВЛЕНИЕ № 2 **
Я проверил кадр self.view до и после анимации, и похоже, что родительский вид недостаточно изменяет размеры.
после перехода в полноэкранный режим рамка просмотра имеет высоту всего 411 пикселей. Я попытался поэкспериментировать с фреймом вручную, а также установил autoResizeMask без удачи.
**** ОБНОВЛЕНИЕ: вот конечный результат ****
- (void)toggleFullscreen {
isFullScreen = !isFullScreen; //ivar
//hide status bar & navigation bar
[[UIApplication sharedApplication] setStatusBarHidden:isFullScreen animated:YES];
[self.navigationController setNavigationBarHidden:isFullScreen animated:YES];
[UIView beginAnimations:@"fullscreen" context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:.3];
//move tab bar up/down
CGRect tabBarFrame = self.tabBarController.tabBar.frame;
int tabBarHeight = tabBarFrame.size.height;
int offset = isFullScreen ? tabBarHeight : -1 * tabBarHeight;
int tabBarY = tabBarFrame.origin.y + offset;
tabBarFrame.origin.y = tabBarY;
self.tabBarController.tabBar.frame = tabBarFrame;
//fade it in/out
self.tabBarController.tabBar.alpha = isFullScreen ? 0 : 1;
//resize webview to be full screen / normal
[webView removeFromSuperview];
if(isFullScreen) {
//previousTabBarView is an ivar to hang on to the original view...
previousTabBarView = self.tabBarController.view;
[self.tabBarController.view addSubview:webView];
webView.frame = [self getOrientationRect]; //checks orientation to provide the correct rect
} else {
[self.view addSubview:webView];
self.tabBarController.view = previousTabBarView;
}
[UIView commitAnimations];
}
(обратите внимание, что я переключил просмотр текста в веб-просмотр, но то же самое работает для исходного просмотра текста)