Question

J'ai une sous-classe de UIViewController qui gère un UIView. Le contrôleur de vue est présenté sous forme modale (il glisse vers le haut depuis le bas de l'écran). En haut de la vue, j'ai ajouté une barre de navigation. Notez que cette barre n'est pas gérée par un contrôleur de navigation.

Je souhaite que la barre de navigation diminue en hauteur lorsque la vue passe en mode paysage (similaire à son comportement en cas de traitement par un contrôleur UINavigationController). Toutefois, je ne peux pas définir son masque de redimensionnement automatique à une hauteur flexible dans IB. De cette manière, dans le code, la barre de navigation disparaît complètement.

Y at-il un moyen de faire cela? Comment le contrôleur UINavigation le fait-il?

P.S. Je préférerais ne pas avoir à recourir à une transformation de redimensionnement, car cela gâcherait le texte dans le titre.

EDIT: Je l'ai résolu avec un peu d'aide, lisez la réponse ci-dessous.

Était-ce utile?

La solution 2

J'ai trouvé la solution et, avec le recul, je me sens plutôt stupide. Il me suffisait d'inclure une marge inférieure flexible dans le masque de taille automatique de la barre de navigation. Le mérite revient à l’utilisateur RayNewbie dans ce fil de discussion, ce qui m’a amené à la solution:

http://discussions.apple.com/thread.jspa?messageID=8295525

Autres conseils

Plutôt que de définir son masque de réaugmentation automatique, pourquoi ne pas simplement vérifier l'orientation actuelle dans viewWillAppear, ainsi que dans didRotateFromInterfaceOrientation, et définir le cadre approprié?

- (void) updateNavBar {
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if ((UIInterfaceOrientationLandscapeLeft == orientation) ||
        (UIInterfaceOrientationLandscapeRight == orientation)) {
        myNavBar.frame = CGRectMake(0, 0, 480, 34);
    } else {
        myNavBar.frame = CGRectMake(0, 0, 320, 44);
    }
}
- (void) viewWillAppear {
    [self updateNavBar];
    // ... SNIP ...
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [self updateNavBar];
    // ... SNIP ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top