Réponse historique seulement. Spectaculeusement dépassé:
Veuillez noter que cette réponse est maintenant extrêmement périmée.
Cet article est seulement une curiosité historique.
Nouvelles passionnantes! Comme découvert par Andrew ci-dessous, ce problème a été corrigé par Apple dans 4.0+.
Il semblerait qu'il n'est plus nécessaire de forcer la taille de la vue sur chaque vue, et le problème sérieux spécifique de paysage "ne fonctionnant que la première fois" a été résolu. Depuis avril 2011, il n'est pas possible de tester ou même de construire quoi que ce soit en dessous de 4.0, donc la question est purement une curiosité historique. C'est incroyable combien de problèmes cela a causé aux développeurs depuis si longtemps!
Voici la discussion d'origine et la solution. Ceci est totalement hors de propos maintenant, car ces systèmes ne sont même pas opérationnels.
Il est extrêmement difficile de faire ce travail tout à fait - il y a au moins trois problèmes/bugs en jeu.
essayer .. interface builder landscape design
note en particulier que, lorsqu'il dit « et vous devez utiliser shouldAutorotateToInterfaceOrientation correctement partout » cela signifie partout, toutes vos vues en plein écran.
Espérons que cela aide dans ce cauchemar!
Un rappel important du problème bien connu ADDITIONNEL à portée de main ici: si vous essayez d'échanger entre PLUS D'UN vue (tous les paysages), IL NE FONCTIONNE PAS SIMPLEMENT. Il est essentiel de s'en souvenir ou vous perdrez des jours sur le problème. C'est littéralement pas possible. C'est le plus gros bug ouvert et connu de la plateforme iOS. Il n'y a littéralement aucun moyen de faire en sorte que le matériel fasse la deuxième vue que vous chargez, soyez paysage. La solution de contournement ennuyeuse mais simple, et ce que vous devez faire, est d'avoir un maître UIViewController trivial qui ne fait rien mais reste assis et vous permettez de basculer entre vos vues.
En d'autres termes, dans iOS à cause d'un bug majeur savoir:
[window addSubview:happyThing.view];
[window makeKeyAndVisible];
Vous pouvez le faire qu'une seule fois. Plus tard, si vous essayez de supprimer happyThing.view, et mettez à la place newThing.view, IL NE FONCTIONNE PAS - ET C'EST CELA.La machine ne fera jamais pivoter la vue vers le paysage. Il n'y a pas de solution miracle, même Apple ne peut pas le faire fonctionner. La solution de contournement que vous devez adopter est d'avoir un UIViewController global qui se trouve simplement là et ne contient que vos différentes vues (happyThing, newThing, etc). J'espère que cela aide!
Pour les futurs lecteurs, s'il vous plaît noter que ce fameux problème ** est maintenant résolu par Apple ** à partir de 2011. Notez le projet de test dans la réponse ci-dessous. – Fattie