2011-05-16 16 views
20

El método [[UIDevice currentDevice] orientation] devuelve varias orientaciones más allá de la orientación vertical y horizontal. Estoy al tanto de comprobar si la orientación devuelta es "válida". Desafortunadamente, si la orientación devuelta NO es "válida" cuando mi aplicación requiere una orientación específica para determinar qué métodos ejecutar, no tengo forma de saber qué método es apropiado.Determinación de la orientación de la pantalla en lugar de la orientación del dispositivo

He intentado una serie de soluciones para esto, pero por ahora lo único que he podido resolver es comprobar si la orientación es LandscapeLeft o LandscapeRight y si no lo es supongo que la pantalla está en orientación vertical. Lamentablemente, esto no es cierto cuando el dispositivo está boca arriba y la pantalla está en orientación horizontal.

me trató de utilizar la orientación del controlador de vista de los padres:

parentController.interfaceOrientation; 

Por desgracia, volvieron UIDeviceOrientationUnknown. Busco SO y Google para otra persona que se ha enfrentado a este problema. Me parece tonto que Apple tenga cualquier cosa menos LandscapeLeft/Right y PortraitUp/Down para sus orientaciones.

Lo que realmente necesito es la orientación de las APPS, no los dispositivos, ya que a veces están en desacuerdo. ¿Algún consejo?

Respuesta

49

¿Ha intentado utilizar UIInterfaceOrientationPortrait/UIInterfaceOrientationLandscape? Por lo general tienen muy buenos resultados usando estos métodos:

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) { 
    //do portrait work 
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){ 
    //do landscape work 
} 

También puede intentar UIDeviceOrientationIsValidInterfaceOrientation.

Esto solo devolverá la orientación de la aplicación, que puede no ser la misma que la orientación del dispositivo.

Si eso no funciona, también puede probar:

[[UIApplication sharedApplication] statusBarOrientation] 
Cuestiones relacionadas