rotar rotacion quiero que pantalla gire girar gira desactivar ios objective-c landscape

ios - rotacion - rotar pantalla iphone 6



AplicaciĆ³n de iPhone en modo horizontal, sistemas 2008 (8)

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 para iPhone que se ejecute en modo horizontal desde el principio, independientemente de la posición del dispositivo?

Tanto programáticamente como utilizando el generador de interfaces.


Respuesta histórica solamente. 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, Apple solucionó este problema en 4.0+.

Parece que ya no es necesario forzar el tamaño de la vista en cada vista, y el problema grave específico del paisaje "solo funciona la primera vez" se ha resuelto.

A partir de abril de 2011, no es posible probar ni 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 original y la solución. Esto es completamente irrelevante ahora, ya que estos sistemas ni siquiera son operables.

Es EXTREMADAMENTE DIFÍCIL hacer que esto funcione por completo: hay al menos tres problemas / errores en juego.

prueba esto ... diseño del paisaje del generador de interfaces

Tenga en cuenta, en particular, que donde dice "y necesita usar debeAutorotateToInterfaceOrientation correctamente en todas partes" significa en todas partes, todas sus vistas de pantalla completa.

Espero que ayude en esta pesadilla!

Un recordatorio importante del conocido problema ADICIONAL que tenemos a la mano aquí: si está intentando cambiar entre MÁS DE UNA vista (todo el paisaje), SIMPLEMENTE NO FUNCIONA . Es esencial recordar esto o perderá días en el problema. Literalmente NO ES POSIBLE. Es el mayor error abierto y 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 simple pero molesta, y lo que debe hacer, es tener un UIViewController maestro trivial que no hace nada más que sentarse allí y le permite cambiar entre sus puntos de vista.

En otras palabras, en iOS debido a un error importante:

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

Puedes hacer eso solo una vez . Más tarde, si intenta eliminar happyThing.view y, en su lugar, coloca newThing.view, NO FUNCIONA, Y ESO ES ESO. La máquina nunca rotará la vista al paisaje. No hay una solución, 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 contenga sus diversas vistas (happyThing, newThing, etc.). ¡Espero eso ayude!


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 de inmediato, 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: Inicio de su aplicación en modo horizontal

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


La última Guía de programación del iPhone OS tiene una sección completa sobre esto, con un código de muestra. Estoy seguro de que esta es una adición reciente, así que tal vez te la perdiste. Explica todas las condiciones que debe cumplir; básicamente...

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

Busque "Inicio en modo horizontal", página 102.


La respuesta de sasb y michaelpryor parece ser correcta, pero si no funciona para usted, pruebe esta alternativa:

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

O este:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

O este:

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

También es posible que deba llamar a 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 .


Me sorprende que a nadie se le haya ocurrido esta respuesta todavía:

En todas mis pruebas cuando descarto un controlador de vista modal, la orientación preferida del controlador de vista principal establecida en shouldAutorotateToInterfaceOrientation se shouldAutorotateToInterfaceOrientation incluso cuando forma parte de un UINavigationController. Entonces la solución a esto es simple:

Cree un UIViewController ficticio con un UIImageView para un segundo plano. Establezca la imagen en la imagen default.png que su aplicación usa al inicio.

Cuando se llama a viewWillAppear en su controlador de vista raíz, simplemente presente el controlador de vista ficticio sin animación.

cuando se llama a viewDidAppear en su controlador de vista ficticio, descarte el controlador de vista con una agradable animación de disolución cruzada.

¡Esto no solo funciona, sino que se ve bien! Por cierto, solo para aclarar, hago la vista del controlador de vista raíz viewWillAppear así:

- (void)viewWillAppear:(BOOL)animated { if ( dummy != nil ) { [dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; [self presentModalViewController:dummy animated:NO]; [dummy release]; dummy = nil; } ... }


Primero puse 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 manera puedo trabajar en la vista en Interface Builder en modo horizontal.


Vea esta respuesta: Modo horizontal SOLO para iPhone o iPad

  1. agregar orientación para plist
  2. shouldAutorotateToInterfaceOrientation = YES en todos los archivos

Aunque si está utilizando modos mixtos, podría estar mejor con

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];


Resumen e integración de todas las publicaciones, después de probarlo yo mismo; verifique 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:

  1. establezca su orientación en UISupportedInterfaceOrientations en el archivo Info.plist
  2. en su ventana defina un "controlador de vista base" 480x320. Cualquier otra vista se agregará como una subvista a su vista.
  3. en todos los controladores de vista, configure el método shouldAutorotateToInterfaceOrientation: (para devolver el mismo valor que definió en el plist, por supuesto)
  4. en todos los controladores de vista establezca una vista de fondo con

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

    en el método viewDidLoad .

Actualización (iOS 4.x, 5.x) : la Guía de programación de aplicaciones Apple iOS tiene un párrafo "Iniciando en modo horizontal" en el capítulo "Trucos de aplicaciones avanzadas".

Referencias