Determinar la orientación de la pantalla en lugar de la orientación del dispositivo

La [[UIDevice currentDevice] orientation] El método devuelve una serie de orientaciones más allá de la orientación vertical y horizontal. Soy consciente de la comprobación para ver 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.

He intentado varias soluciones a esto, pero por ahora lo único que he podido resolver es comprobar si la orientación es LandscapeLeft or LandscapeRight y si no es así, supongo que la pantalla está en orientación vertical. Desafortunadamente, esto no es cierto cuando el dispositivo está boca arriba y la pantalla está en orientación horizontal.

Intenté usar la orientación del controlador de vista principal:

parentController.interfaceOrientation;

Desafortunadamente regresó UIDeviceOrientationUnknown. Busco en SO y en Google a alguien más que se haya enfrentado a este problema. Me parece una tontería que Apple tenga cualquier cosa menos LandscapeLeft/Right y PortraitUp/Down por sus orientaciones.

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

preguntado el 16 de mayo de 11 a las 19:05

1 Respuestas

¿Has probado usar UIInterfaceOrientationPortrait/UIInterfaceOrientationLandscape? Por lo general, obtengo resultados bastante buenos con estos métodos:

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

También podrías intentar UIDeviceOrientationIsValidInterfaceOrientation.

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

Si esos no funcionan, también puede probar:

[[UIApplication sharedApplication] statusBarOrientation]

Respondido el 05 de diciembre de 14 a las 00:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.