J'ai le même problème.
J'ai un jeu de travail en orientation paysage (paysage à la fois à gauche et à droite).
Afin de gérer une application multi-vue j'utiliser un UIViewController racine, soit une UIViewController factice avec un UIView qui ne fait rien. Je puis ajouter tous les autres UIView à lui comme une sous-vue.
Lors du démarrage de l'application, l'émulateur tourne rapidement à une orientation portrait, et je reçois tous mes vues avec elle la propriété de cadre ressemblant à (0, -80.320.480). Il en résulte la vue écrêtées par un rectangle de 160 x 320 sur le côté droit.
J'ai remarqué que la - shouldAutorotateToInterfaceOrientation: méthode de chaque sous-vue est appelée une seule fois, et que cela arrive quand il est ajouté à la vue racine. Plus tard, lors de la rotation du dispositif, seule la vue racine obtient c'est la méthode appelée.
Sans surprise, l'une des - appels willAnimate méthodes * ne sont envoyés à la vue racine, donc, de définir l'une de ces méthodes dans subviews est inutile.
Ces méthodes sont appelées à chaque fois que l'orientation est remplacée par une orientation acceptée par le - shouldAutorotateToInterfaceOrientation: méthode. donc je me suis dit que je pourrais chnage mes sous-vues de la propriété cadre à partir de là.
Pour ce faire, je définissais la méthode suivante dans ma classe de RootViewController:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
subview1_ViewController.view.frame = CGRectMake(0,0,480,320);
subview2_ViewController.view.frame = CGRectMake(0,0,480,320);
...
}
Je ne comprends pas pourquoi la propriété cadre est pas mis à jour, mais je sais que cette solution de contournement fonctionne.
J'espère que cela t'aides....