Tenga en cuenta que esta pregunta es de 2008 y ahora solo tiene un interés histórico.
¿Cuál es la mejor manera de crear una aplicación de iPhone que se ejecute en modo horizontal desde el principio, independientemente de la posición del dispositivo?
Tanto mediante programación como mediante el Interface Builder.
ios
objective-c
landscape
Michiel de Mare
fuente
fuente
Respuestas:
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:
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!
fuente
Desde el sitio de desarrollo de Apple:
fuente
Resumen e integración de todas las publicaciones, después de probarlo yo mismo; compruebe la actualización para 4.x, 5.x a continuación.
A partir de 3.2, no puede cambiar la orientación de una aplicación en ejecución desde el código.
Pero puede iniciar una aplicación con una orientación fija, aunque hacerlo no es sencillo.
Prueba con esta receta:
UISupportedInterfaceOrientations
en elInfo.plist
archivoshouldAutorotateToInterfaceOrientation:
método (para devolver el mismo valor que definió en el plist, por supuesto)en todos los controladores de vista establecer una vista de fondo con
self.view.frame = CGRectMake(0, 0, 480, 320)
en el
viewDidLoad
método.Actualización (iOS 4.x, 5.x) : la Guía de programación de la aplicación Apple iOS tiene un párrafo "Inicio en modo horizontal" en el capítulo "Trucos avanzados de la aplicación".
Referencias:
fuente
Primero configuro en info.plist
luego puse este código en applicationDidFinishLaunching:
De esta manera puedo trabajar en la vista en Interface Builder en modo horizontal.
fuente
La respuesta de sasb y michaelpryor parece ser correcta, pero si no le funciona, pruebe esta alternativa:
O este:
O este:
También puede que tenga que llamar
window makeKeyAndVisible;
primero.Algunos enlaces: Desarrollo en modo horizontal , iPhone SDK: ¿Cómo forzar solo el modo horizontal ?
@Robert: consulte el iPhone SDK, NDA y Stack Overflow .
fuente
Me sorprende que nadie haya encontrado esta respuesta todavía:
En todas mis pruebas, cuando se descarta un controlador de vista modal, se
shouldAutorotateToInterfaceOrientation
respeta la orientación preferida del controlador de vista principal establecida incluso cuando forma parte de un UINavigationController. Entonces la solución a esto es simple:Cree un UIViewController ficticio con un UIImageView como fondo. Establezca la imagen en la imagen default.png que su aplicación usa al inicio.
Cuando
viewWillAppear
reciba una llamada en su controlador de vista raíz, simplemente presente el controlador de vista ficticia sin animación.cuando
viewDidAppear
reciba una llamada en su controlador de vista ficticio, cierre el controlador de vista con una bonita animación de disolución cruzada.No solo funciona, ¡sino que se ve bien! Por cierto, solo para aclarar, hago el controlador de vista raíz
viewWillAppear
como este:fuente
La última guía de programación de iPhone OS tiene una sección completa sobre esto, con código de muestra. Estoy seguro de que esta es una adición reciente, así que quizás te la perdiste. Explica todas las condiciones que debe cumplir; básicamente...
Busque "Inicio en modo horizontal", página 102.
fuente
Vea esta respuesta: Modo horizontal SOLO para iPhone o iPad
Aunque si está utilizando modos mixtos, es posible que esté mejor con
fuente