Problèmes avec l'interface Orientation et UITabBarController
-
26-09-2019 - |
Question
Problème rapide:
J'ai un UITabBarController avec 2 contrôleurs de navigation [permet de les appeler gauche et droite Controller]
Sur la valeur par défaut sélectionné Controller gauche je peux pousser un nouveau View Controller qui détecte l'orientation interface.
Sur le contrôleur droit je peux pousser le même point de vue du contrôleur, mais il ne détecte pas l'orientation de l'interface, ou pour cette matière, il ne va pas même dans la méthode shouldAutoRotateInterface du tout T ___ T
Haaalp !!
Si elle est de toute pertinence, la vue Contoller que je pousse utiliser la propriété hidesBottomBarWhenPushed.
La solution
que votre UITabBarController mettre en œuvre la rotation automatique? tout viewcontroller enfant qui souhaite mettre en œuvre autorotation doit avoir son parent mettre en œuvre autorotation.
Autres conseils
La plupart il est probable que votre problème:
contrôleurs de barre d'onglets supportent un portrait l'orientation par défaut et ne pas Faire pivoter à une orientation paysage à moins que tous les contrôleurs de vue racine soutenir une telle orientation . Lorsqu'une orientation de l'appareil le changement se produit, la languette de commande de barre interroge sa gamme de contrôleurs de vue. Si l'un d'eux ne prend pas en charge l'orientation, la barre d'onglets contrôleur ne change pas orientation.
La solution consiste à remplacer la méthode suivante sur chaque contrôleur de vue menant à votre vue:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return YES;
}
Par exemple, au lieu d'utiliser la UITabBarController
par défaut dans IB, remplacez-le par votre propre sous-classe ne contenant que la méthode ci-dessus.
Je suis un peu en retard à la fête à ce sujet, mais je suis tombé sur un problème avec autorotation au démarrage pour une application barre d'onglets Je voulais toujours courir en mode portrait.
Le plist de l'application contient les paramètres nécessaires à la fois début et ne permettent en mode portrait, et tous mes contrôleurs vue ne permettent que le mode portrait. Pourtant, quand j'ai commencé l'application tenant mon iPhone dans le paysage, l'application a commencé en mode portrait, mais tourné vers le paysage!
Au lieu de la sous-classe UITabBarController
, je simplement la méthode de UITabBarController
de l'emportait sur shouldAutorotateToInterfaceOrientation:
en utilisant une catégorie de la classe UITabBarController
. J'inclus ce code dans mon délégué app:
@implementation UITabBarController(UITabBarControllerCategory)
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
fonctionne à merveille, et est tout à fait léger.