2010-01-22 15 views
5

He estado leyendo una tonelada en rotación, pero no he encontrado una solución para mi consulta. Aquí va:rotación de fuerza del iPhone

Tengo una aplicación de retrato con una barra de pestañas y un controlador de navegación oculto en mi pestaña. En un punto de la aplicación, la siguiente vista debe ser horizontal.

El diseño de XIB se ha realizado en formato horizontal, por lo que quiero mostrar el xib sin ningún código de traducción o movimiento de píxel. (No creo que esto sea necesario) He intentado simplemente presionar la vista (permanece en el retrato), cambiando la vista usando varios métodos (no parece alinear correctamente).

¿Hay alguna forma de decir que ya está preparado para el paisaje antes de abrirlo?

¡Gracias de antemano!

+0

encontrar una respuesta a esta pregunta [aquí] [1] [1]: http://stackoverflow.com/questions/181780/is-there-a-documented-way-to-set -the-iphone-orientation –

+0

Más específicamente, fíjate en la respuesta de 77 votos a favor en esa pregunta: http://stackoverflow.com/a/4915378/39974 - al presionar y soltar un controlador de vista ficticio parece funcionar bien al menos hasta e incluyendo iOS 5.1. –

Respuesta

3

Estoy seguro de que no se puede 'forzar' una rotación. El sistema decide cuándo cambiar la orientación del dispositivo; entonces las propiedades de 'orientación' son esencialmente de solo lectura. Intenté este mismo problema hace mucho tiempo cuando quería asegurarme de que una vista en particular siempre se mostrara en una orientación.

Debido a esto, la mayoría de las aplicaciones permiten todas sus vistas y los controladores de vista funcionan en cualquiera de las orientaciones que admite la aplicación. Descubrí que intentar restringir el comportamiento de algunas vistas y ver los controladores en última instancia, crea más problemas y puede causar problemas al hacer la transición entre las vistas y los controladores de vista.

El código que ha publicado funcionará para su vista. En realidad, no estás cambiando la orientación; su vista se está comportando como si hubiera sido rotada dibujando de forma rotativa. No estoy seguro de si puede hacer lo mismo con la barra de navegación o no, pero vale la pena intentarlo. Si puede controlar las propiedades de vista de la barra de navegación (también es una UIView), debería funcionar el mismo patrón que está utilizando para su vista personalizada.

La mayoría de las aplicaciones que desean que solo se visualice en el paisaje obligan a toda su aplicación a estar en el paisaje. Por ejemplo, Flight Control solo admite una orientación. Por lo tanto, el código de dibujo es bastante simple; Independientemente de la orientación, simplemente dibuje la vista y gírela a la orientación que admite (paisaje a la izquierda o a la derecha).

El diseño de su aplicación no sería tan fácil ... parece que no está diseñando una aplicación de pantalla completa. Debería preocuparse de que la barra de navegación y la barra de estado se dibujen correctamente.

+0

Excelente punto, no lo había pensado desde esa perspectiva. –

7

encontrado, este código hace el truco en el viewDidLoad:

self.view.transform = CGAffineTransformIdentity; 
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0); 

todavía tiene 1 cosa extraña. No importa lo que haga para configurar la barra de navegación como oculta, no gira y permanece en el lado izquierdo de la vista.

[[self navigationController] setNavigationBarHidden:YES animated:NO]; 

¿Alguien ha detectado este comportamiento y lo ha resuelto?

Cuestiones relacionadas