J'ai une application qui a un onglet de la barre et la barre de navigation pour des relations normales. L'un de mes écrans est une grande partie du texte, j'ai donc permettre à l'utilisateur de taper pour le plein écran (un peu comme les Photos.app).
La barre de navigation & de la barre d'onglets sont cachés, et j'ai mis le texte sur l'image pour être en plein écran. Le problème est, il est à propos de 50px de l'espace blanc où la barre d'onglet utilisé pour être. Vous pouvez voir si à partir de cette capture d'écran:
Je ne suis pas sûr de ce qui cause cela. L'espace est certainement pas la vue derrière l'affichage de texte, comme je l'ai mis de la couleur d'arrière-plan rouge juste pour être sûr. Ce pourrait être la cause?
** Mise à JOUR **
J'ai fait de frapper un essai dans un UIWindow sous-classe et a trouvé que l'espace est en fait la documentée/non publiées UILayoutContainerView. C'est la vue parent de la tabBar. Je ne pense pas qu'il est recommandé de manipuler directement ce point de vue, alors comment puis-je masquer la barre d'onglets?
** Mise à JOUR # 2 **
J'ai vérifié l'auto.vue de l'image avant et après l'animation, et il semble que la vue parent n'est pas de redimensionnement assez.
après être passé en mode plein écran, l'affichage de l'image est seulement 411 pixels de hauteur. J'ai essayé de jouer avec le cadre à la main et réglage autoResizeMask avec pas de chance.
** Mise à JOUR: Voici le résultat final **
- (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];
}
(note que je suis passé de textview de webview, mais le même travaille pour le texte original de la vue)