Modal-Vue-Contrôleur de la force de l'orientation Paysage dans iOS 6
J'ai un UITabBarController présenté en mode Portrait. Sur l'un des onglets, j'ai un bouton qui affiche un UIViewController modal (Un simple storyboard segue effectue l'action).
Je veux que ce modal pour être affiché en mode Paysage, mais je ne peux pas le faire tourner automatiquement.
J'ai cette modale des points de vue contrôleur
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
J'ai ajouté landscapeLeft à l' .plist pris en charge orientations (bien que cela permet aussi à l'TabBar être tourné que je ne veux pas)
J'ai aussi ajouté ceci à la ViewDidLoad modes de vue
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
mais je ne peux pas le faire tourner par lui-même.
Grâce
EDIT ----
Il semble shouldAutoRotate n'est même pas d'être appelé!
Aussi, je suis en train de détecter l'orientation et le présent code ci-dessous montre toujours 2, indépendamment de l'orientation!
if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) {
NSLog(@"1");
self.hostView.frame = CGRectMake(0, 60, 200, 255);
} else {
NSLog(@"2");
self.hostView.frame = CGRectMake(0, 45, 480, 255);
}
EDIT 2 ---
Mon mauvais. Je suppose que je devrais avez mentionné, j'ai été en utilisant iOS 6. L'affichage pivote automatiquement sur iOS 5.
shouldAutorotateToInterfaceOrientation est obsolète, donc j'ai besoin de lire sur les nouvelles méthodes.
C'est un peu stupide, vraiment! J'ai un graphique qui ne s'insère que dans le Paysage. Afin de vous dire que Apple veut me montrer ce foutu jusqu'à ce que l'utilisateur met son appareil. Ce n'est pas vrai, bien que je n'ai pas trouvé une solution afin que vous peut-être raison.
OriginalL'auteur Darren | 2012-08-21
Vous devez vous connecter pour publier un commentaire.
-(BOOL)shouldAutorotate
de UIViewController sous n'importe quel Conteneur (comme UINavigationController) ne sera pas appelé à partir de IOS6.Essayé une solution avec l'aide de Catégorie pour ajouter une méthode à l'existant, UINavigationController Classe.
à l'intérieur de la shouldAutorotate méthode, vous pouvez appeler shouldAutorotate méthode dans chaque vue-contrôleur de soi.viewControllers. En fait, vous pouvez passer à votre enfant de-vue-contrôleur.
OriginalL'auteur Esmond
Si vous voulez forcer la rotation dans iOS6, votre rootviewController devrait mettre en œuvre ces méthodes:
OriginalL'auteur miham
Dans iOS 6, il semble que cette méthode peut aider à forcer une orientation spécifique sur iOS 6.
Je suis encore à essayer de l'obtenir pour fonctionner et est mis à jour avec toutes les conclusions.
OriginalL'auteur CoderDan
- Je faire exactement cela dans mon application, et de le faire via shouldAutoRotateToInterfaceOrientation, légèrement différemment de vous:
pour iOS 6, vous devez également définir la fenêtre.rootViewController = {votre vue de la racine contrôleur}; dans votre délégué d'application. J'espère que c'est votre problème
ok pas cool, je ne suis pas en utilisant des storyboards dans mes applications, mais je ne pense pas que cela devrait provoquer ce problème. Je soupçonne que le rootViewController propriété est définie automatiquement pour vous de toute façon. Il serait intéressant de journal des appels pour shouldAutorotate pour voir si c'est encore appelé
Non, shouldAutorotate n'est pas d'être appelé à à tous!
Oups. shouldAutorotateToInterfaceOrientation est obsolète dans iOS 6. Je suppose que je devrais avez mentionné, j'ai été à l'aide.
OriginalL'auteur CSmith