У меня есть приложение, которое имеет панель вкладок и навигационную панель для нормального взаимодействия. Один из моих экранов - большая часть текста, поэтому я разрешаю пользователю входить в полноэкранный режим (например, 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];
}
(обратите внимание, что я переключил textview на webview, но то же самое работает для исходного текстового представления)