Solo respuesta histórica. Espectacularmente desactualizado.
Tenga en cuenta que esta respuesta ahora está muy desactualizada /
Esta respuesta es solo una curiosidad histórica .
¡Noticias emocionantes! Como descubrió Andrew a continuación, este problema ha sido solucionado por Apple en 4.0+.
Parece que ya no es necesario forzar el tamaño de la vista en cada vista, y se ha resuelto el grave problema específico del paisaje "solo funciona la primera vez".
Desde abril de 2011, no es posible probar o incluso construir nada por debajo de 4.0, por lo que la pregunta es puramente una curiosidad histórica. ¡Es increíble la cantidad de problemas que causó a los desarrolladores durante tanto tiempo!
Aquí está la discusión y la solución originales. Esto es completamente irrelevante ahora, ya que estos sistemas ni siquiera son operables.
Es EXTREMADAMENTE DIFÍCIL hacer que esto funcione completamente; hay al menos tres problemas / errores en juego.
prueba este ... diseño de paisaje del constructor de interfaces
Tenga en cuenta en particular que donde dice "y debe usar shouldAutorotateToInterfaceOrientation correctamente en todas partes" significa en todas partes, todas sus vistas de pantalla completa.
¡Espero que te ayude en esta pesadilla!
Un recordatorio importante del conocido problema ADICIONAL que nos ocupa aquí: si está intentando cambiar entre MÁS DE UNA vista (todo paisaje), SIMPLEMENTE NO FUNCIONA . Es fundamental recordar esto o perderá días en el problema. Literalmente NO ES POSIBLE. Es el error abierto más grande conocido en la plataforma iOS. Literalmente, no hay forma de hacer que el hardware haga que la segunda vista que cargue sea horizontal. La solución molesta pero simple, y lo que debe hacer, es tener un UIViewController maestro trivial que no hace nada más que sentarse allí y permitirle intercambiar sus puntos de vista.
En otras palabras, en iOS debido a un error de conocimiento importante:
[window addSubview:happyThing.view];
[window makeKeyAndVisible];
Puedes hacerlo solo una vez . Más tarde, si intenta eliminar happyThing.view y, en su lugar, coloca newThing.view, NO FUNCIONA, Y ESO ES. La máquina nunca rotará la vista al paisaje. No hay solución de trucos, incluso Apple no puede hacer que funcione. La solución alternativa que debe adoptar es tener un UIViewController general que simplemente se sienta allí y solo mantenga sus diversas vistas (happyThing, newThing, etc.). ¡Espero eso ayude!