Aquí podría ser tu PUBLICIDAD


Aplicación iPhone en modo apaisado, sistemas 2008

votos
88

Nota: 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 de forma programática como con el Interface Builder.

Publicado el 02/08/2008 a las 11:47
fuente por usuario Michiel de Mare
En otros idiomas...        العربية       

8 respuestas

votos
46

respuesta histórica única. Espectacularmente fuera de la fecha:

Tenga en cuenta que esta respuesta es, ahora muy de moda.

Este mensaje es solamente una curiosidad histórica .


¡Noticias emocionantes! Como se descubrió por Andrew continuación, este problema se ha solucionado por Apple en 4.0+.

Parece que ya no es necesario forzar el tamaño de la vista en todas las vistas, y el grave problema específico del paisaje "trabajar sólo la primera vez que" ha sido resuelto.

A partir de abril de 2011, no es posible probar o incluso construir cualquier cosa por debajo de 4,0, por lo que la pregunta es meramente una curiosidad histórica. Es increíble la cantidad de problemas que causó desarrolladores durante tanto tiempo!


Aquí está la discusión y solución original. Esto es totalmente irrelevante ahora, ya que estos sistemas no son aún operables.


Es extremadamente difícil para que esto funcione plenamente - hay por lo menos tres problemas / errores en el juego.

probar este .. diseño de la interfaz constructor de paisaje

Tenga en cuenta especialmente que donde dice "y tiene que utilizar shouldAutorotateToInterfaceOrientation adecuadamente en todas partes" significa en todas partes, todos sus puntos de vista a pantalla completa.

Espero que ayuda en esta pesadilla!

Un recordatorio importante de la ADICIONAL conocido problema que nos ocupa aquí: si usted está tratando de cambiar entre MÁS DE UN vista (todo el paisaje), TI simplemente no funciona . Es esencial recordar esto o va a desperdiciar días en el problema. Es, literalmente, no es posible. Es el más grande abierta, conocida, error en la plataforma iOS. Literalmente no hay manera de hacer que el hardware hacen que el segundo punto de vista se carga, ya sea horizontal. La solución molesto, pero simple, y lo que debe hacer, es tener un maestro UIViewController triviales que no hace más que sentarse allí y le permiten cambiar entre sus puntos de vista.

En otras palabras, en IOS a causa de un fallo importante saber:

[window addSubview:happyThing.view];
[window makeKeyAndVisible];

Usted puede hacer que sólo una vez . Más tarde, si intenta quitar happyThing.view, y en su lugar poner ahí newThing.view, no funciona - y eso es todo. La máquina nunca girar la vista a paisaje. No hay una solución truco, aunque Apple no puede hacer que funcione. La solución debe adoptar está teniendo un UIViewController general que simplemente se sienta allí y sólo mantiene sus diversos puntos de vista (happyThing, nuevoElemento, etc). ¡Espero eso ayude!

Respondida el 27/03/2010 a las 10:13
fuente por usuario Fattie


Aquí podría ser tu PUBLICIDAD


votos
40

Desde el sitio de Apple Dev:

Para iniciar su aplicación en modo horizontal para que la barra de estado esté en la posición adecuada inmediatamente, edite su archivo Info.plist para agregar la clave UIInterfaceOrientation con el valor apropiado (UIInterfaceOrientationLandscapeRight o UIInterfaceOrientationLandscapeLeft), como se muestra en el Listado 2.

Listado 2: iniciar su aplicación en modo horizontal

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
Respondida el 31/08/2008 a las 03:38
fuente por usuario Michael Pryor

votos
27

Resumen e integración de todos los puestos, después de probar yo mismo; comprobar la actualización para 4.x, 5.x a continuación.

A partir de 3.2 no se puede cambiar la orientación de una aplicación que se ejecuta desde el código.

Pero se puede iniciar una aplicación con una orientación fija, pero al hacerlo, esto no es sencillo.

Pruebe con esta receta:

  1. configurar la orientación a UISupportedInterfaceOrientationsen el Info.plistarchivo
  2. en la ventana de definir una "vista del controlador de base" 480x320. Todas las demás vistas se añadirá como una subvista a su punto de vista.
  3. en todos los controladores de vista configurar el shouldAutorotateToInterfaceOrientation:método (a devolver el mismo valor que ha definido en el plist, por supuesto)
  4. en todos los controladores de vista configurar una vista de fondo con

    self.view.frame = CGRectMake(0, 0, 480, 320)

    en el viewDidLoadmétodo.

Actualización (4.x IOS, 5.x) : la Guía de programación de aplicaciones de Apple iOS tiene un "Lanzamiento en modo horizontal" en el apartado "trucos Advanced App" capítulo.

referencias:

Respondida el 07/05/2010 a las 12:02
fuente por usuario IlDan

votos
7

Primero configuré en info.plist

<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>

luego puse este código en applicationDidFinishLaunching:

CGAffineTransform rotate = CGAffineTransformMakeRotation(1.57079633);
[window setTransform:rotate];

CGRect contentRect = CGRectMake(0, 0, 480, 320); 
window.bounds = contentRect; 
[window setCenter:CGPointMake(160.0f, 240.0f)]; 

De esta forma puedo trabajar en la vista en Interface Builder en modo horizontal.

Respondida el 20/11/2009 a las 09:58
fuente por usuario samvermette

votos
6

La respuesta de sasb y michaelpryor parece ser correcta, pero si no está funcionando para ti, prueba esta alternativa:

- (void)applicationDidFinishLaunchingUIApplication *)application {
    application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}

O este:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

O este:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

También deberás llamar window makeKeyAndVisible;primero.

Algunos enlaces: Desarrollando en modo apaisado , iPhone SDK: ¿Cómo forzar el modo Paisaje solamente?

@Robert: consulte el iPhone SDK, NDA y Stack Overflow .

Respondida el 31/08/2008 a las 04:01
fuente por usuario Sören Kuklau

votos
5

Me sorprende que nadie ha llegado con esta respuesta todavía:

En todas mis pruebas cuando un despido de un controlador de vista modal orientación preferida del controlador de vista padre situado en shouldAutorotateToInterfaceOrientationes honrado aun cuando parte de un UINavigationController. Así que la solución a esto es simple:

Crear un UIViewController maniquí con una UIImageView para un fondo. Establecer la imagen a la imagen Default.png su aplicación utiliza en el arranque.

Cuando viewWillAppearse vuelve a llamar en su controlador de vista raíz, sólo tiene que presentar el controlador de vista ficticio y sin animación.

cuando viewDidAppearse vuelve a llamar en su controlador de vista ficticio, descartar el controlador de vista con una cruz agradable disolver animación.

No sólo este trabajo, pero se ve bien! Por cierto, sólo para aclarar que hago la vista raíz del controlador viewWillAppearcomo este:

- (void)viewWillAppear:(BOOL)animated
{
 if ( dummy != nil ) {
  [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
  [self presentModalViewController:dummy animated:NO];
  [dummy release];
  dummy = nil;
 }
...
}
Respondida el 27/11/2010 a las 08:38
fuente por usuario Arlen Anderson

votos
4

La última guía de programación del sistema operativo de iPhone 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 lo perdiste. Explica todas las condiciones que debe cumplir; básicamente...

  • establecer las propiedades Info.plist (esto cambia la posición de la barra de estado, pero no la vista)
  • rotar la vista manualmente alrededor de su centro, en su método UIViewController viewDidLoad: o en su método applicationDidFinishLaunching: o implementar la rotación automática ("Autoreizar comportamientos", página 124)

Busque "Lanzar en modo paisaje", página 102.

Respondida el 04/09/2008 a las 10:57
fuente por usuario Miguel A. Friginal

votos
3

Ver esta respuesta: modo horizontal SOLO para iPhone o iPad

  1. añadir la orientación a PLIST
  2. shouldAutorotateToInterfaceOrientation = SI en todos los archivos

Aunque si usted está utilizando los modos mixtos, que podría ser mejor con

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Respondida el 06/03/2011 a las 08:56
fuente por usuario nicc