Tengo un problema similar.
Tengo un juego de trabajo en orientación horizontal (tanto a la izquierda y el paisaje derecha).
Con el fin de administrar una aplicación con múltiples vistas utilizo un UIViewController raíz, es decir, un maniquí con un UIViewController UIView que no hace nada. Luego agregar cualquier otro UIView a ella como una vista secundaria.
Al iniciar la aplicación, el emulador gira rápidamente a una orientación vertical, y me da cada uno de mis puntos de vista con su propiedad marco pareciendo (0, -80320480). Esto resulta en la vista que se recortan por un rectángulo 160 X 320 en el lado derecho.
Me he dado cuenta de que el - shouldAutorotateToInterfaceOrientation: Método de cada subvista sólo se le llama una vez, y eso sucede cuando se agrega a la vista raíz. Más tarde, cuando se gira el dispositivo, sólo la vista raíz recibe su método llamado.
Como era de esperar, cualquiera de los métodos willAnimate - * Las llamadas se envían sólo a la vista raíz, por lo que, definiendo cualquiera de estos métodos en subvistas no tiene sentido.
Estos métodos se llaman cada vez la orientación se cambia a una orientación aceptada por el - shouldAutorotateToInterfaceOrientation: método. Así que pensé que podía chnage propiedad marco de mis subvistas a partir de ahí.
Para lograr esto, he definido el siguiente método en mi clase 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);
...
}
No entiendo por qué la propiedad trama no se actualiza, pero sé que funciona esta solución.
Espero que esto ayude....