2010-07-28 4 views
1

J'ai un problème avec un UINavigationBar et son décalage y. La barre est affichée sans UINavigationController comme superview, mais cela ne devrait pas avoir d'importance. Dans le viewController où la barre de navigation apparaît la configuration ressemble à ceci:Barre de navigation et marge supérieure

// Add Basic View 
    CGRect viewFrame = [[UIScreen mainScreen] applicationFrame]; 
    UIView *myView = [[UIView alloc] initWithFrame:viewFrame]; 
myView.backgroundColor = [UIColor greenColor]; 
self.view = myView; 
[myView release]; 

    UINavigationBar *myBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)]; 
    .... add some Stuff to the bar... 
    [self.view addSubview:myBar]; 
    [myBar release]; 

Comme je l'ajoute navigationBar comme Voir chield à self.view Je suppose que origin.y = 0 signifierait que la barre devrait obtenir directement affiché sous la barre d'état. Cela fonctionne comme prévu si je démarre l'application sur mon iPad, faites-la pivoter une fois (ou plus) et puis descendez jusqu'à la vue décrite ci-dessus. Dans ce cas, UINavigationBar est affiché correctement. Pourtant, si je démarre mon application et que je descends directement vers le contrôleur décrit ci-dessus (sans faire tourner l'appareil avant l'apparition de ce contrôleur), la barre de navigation glisse de 20 points sous la barre d'état. Mais dès que je fais tourner l'appareil, la barre est de nouveau correcte. J'ai vérifié la valeur de viewFrame.origin.y et c'est 20 points dans les deux situations, donc je ne comprends pas pourquoi dans un cas la barre semble juste ignorer la valeur origin.y de sa superview mais pas dans l'autre.

Je suis vraiment confus à ce sujet, quelqu'un d'autre a-t-il déjà connu un tel problème?

Merci beaucoup pour votre aide!

Ps. J'ai aussi essayé avec un UIToolbar, le problème est le même.

Répondre

0

Oui. Ma solution consiste à activer l'indicateur "Plein écran au lancement" dans Interface Builder pour la fenêtre du fichier MainWindow-iPad.xib. Puis concevez vos vues comme si la barre d'état de 20 pixels était toujours affichée, donc dans ma vue racine, j'ai une barre d'outils qui est positionnée 20px en dessous du haut de l'écran dans la vue de contenu.

+0

Désolé, sorte de retard, mais belle solution, merci! – Robin

Questions connexes