Pourquoi mon UITabBar est-il décalé de 20 pixels lorsqu'il est chargé sur portrait?

Je charge un UITabBarController dans un UINavigationController . Par défaut, UITabBar pour UITabBarController place en bas de la vue. En utilisant l'option par défaut, la barre s'affiche correctement à la position inférieure lorsque l'application est lancée en mode paysage.

entrez la description de l'image ici

Cela permet également d'afficher le portrait correctement en bas (mais uniquement lorsque l'application est lancée en mode paysage). entrez la description de l'image ici

Si je démarre l'application en mode portrait, il semble que la hauteur de la barre d'état soit décalée vers le bas sur les deux paysages: entrez la description de l'image ici

et portrait: entrez la description de l'image ici

J'essaie d'avoir un effet similaire à celui de l'application CNBC et d'afficher l' UITabBar en haut de la vue. Après avoir examiné la question de Mihai Damian, j'ai tenté de personnaliser le UITabBar.

J'ai simplement ajouté quelques lignes de code:

 -(void)loadView{ UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; contentView.backgroundColor = [UIColor clearColor]; self.view = contentView; [contentView release]; orderingTabBarController = [[UITabBarController alloc] init]; OrderingSpecialsViewController *specialsViewController = [[OrderingSpecialsViewController alloc] initWithNibName:@"OrderingSpecialsViewController" bundle:nil]; OrderingProductViewTabBarController *productViewTabBarController = [[OrderingProductViewTabBarController alloc] init]; OrderingSummaryViewController *summaryViewController = [[OrderingSummaryViewController alloc] init]; specialsViewController.title = @"SPECIALS"; productViewTabBarController.title = @"PRODUCT"; summaryViewController.title = @"ORDER SUMMARY"; [orderingTabBarController setViewControllers:[NSArray arrayWithObjects:specialsViewController, productViewTabBarController, summaryViewController, nil] animated:YES]; orderingTabBarController.tabBar.frame = CGRectMake(0.0, 110.0, self.view.frame.size.width, 40.0); [specialsViewController release]; [productViewTabBarController release]; [summaryViewController release]; [self.view addSubview:orderingTabBarController.view]; } 

Lorsque j'essaie de modifier le cadre de l'UITabBar, il disparaît en mode paysage: entrez la description de l'image ici

et apparaît à différentes hauteurs sur le portrait quand il a de nouveau commencé en paysage et portrait respectivement.

Initié en mode paysage: entrez la description de l'image ici

Initié en mode portrait: entrez la description de l'image ici

Quelqu'un at-il déjà rencontré ce problème? Si oui, comment avez-vous résolu ce problème? Toute aide est grandement appréciée ici.

Il semble juste append les 20 pixels de la barre d'état lorsque la vue est chargée en mode portrait, comme si elle ne trouvait pas la barre d'état même si elle est là, par conséquent, elle ajoute 20 pixels au-dessus des 20 pixels déjà existants pour la barre d'état.

En fait, j'ai réparé cela via IB. Le controller de vue veut append une barre d'état pour une raison quelconque, tout ce que vous avez à faire est de mettre à zéro sur IB, et de cocher la case resize l'affichage. Assurez-vous également que les dimensions de votre vue sont définies sur 768 x 1024.