Je travaille sur une application iPhone qui fonctionne dans les deux orientations: portrait et paysage.
J'utilise pour une vue et la vision de la TableView intégrée dans une commande UinavigationController. La hauteur de cette barre de navigation avec ses boutons est soit: 44px portrait ou 34px paysage. P>
Dans une vue différente, j'ai créé la barre d'Uinavigation par moi-même et je suis capable de définir le cadre de la taille correcte, mais l'uoinavigageItem intégré avec UIBARBUTTONITEM n'a pas diminué. Donc, pour le 34 px en mode paysage, ce bouton est trop grand et chevauche la barre NAV dans la hauteur. P>
La chose amusante est cependant, que cela a fonctionné avec un code identique dans d'autres applications ... n'a aucune idée ce que ce n'est pas ici. p>
est là quand même ajuster la hauteur / la position d'un uibarbuttonitem? p>
Voici le code SNIPPET: P>
navBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 34.0f)]; [navBar setBarStyle: UIBarStyleBlackOpaque]; [self addSubview: navBar]; barButton = [[UIBarButtonItem alloc] initWithTitle: NSLocalizedString(@"flip", @"flip") style:UIBarButtonItemStylePlain target:self action:@selector(flip)]; item = [[UINavigationItem alloc] initWithTitle: NSLocalizedString(@"Translation", @"Translation Tab Bar Title")]; [item setRightBarButtonItem: barButton]; [navBar pushNavigationItem:item animated:NO];
3 Réponses :
Créer des images alternatives, et dans les méthodes de contrôleur d'affichage qui gèrent l'animation de la rotation, modifiez les images dans les éléments de la touche barre. Ou vous pouvez probablement utiliser un uiImageView code> en tant que vue personnalisée de votre article et définissez son mode de contenu sur l'échelle de l'image vers le bas. P>
Je l'ai compris: la hauteur de la barre de navigation doit être de 32 px! Avec 33 ou 34 px les vis d'alignement. P>
Très utile, merci. 32px était la clé. J'utilisais 34px et ça n'a pas fonctionné.
Voici le code que j'ai écrit sur la base de la réponse de CrashTesttommy:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } - (void) correctNavBarHeightForOrientation:(UIInterfaceOrientation)orientation { // This is only needed in on the iPhone, since this is a universal app, check that first. if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone){ if (UIInterfaceOrientationIsLandscape(orientation)) { self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 32.0f); } else { self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 44.0f); } } } - (void) viewWillAppear:(BOOL)animated { [self correctNavBarHeightForOrientation:[UIApplication sharedApplication].statusBarOrientation]; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [self correctNavBarHeightForOrientation:toInterfaceOrientation]; }