ios - Determinación de la orientación de la pantalla en lugar de la orientación del dispositivo
screen-orientation uiinterfaceorientation (1)
¿Ha intentado usar UIInterfaceOrientationPortrait
/ UIInterfaceOrientationLandscape
? Generalmente tengo buenos resultados usando estos métodos:
if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
//do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
//do landscape work
}
También puede probar 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 puedes probar:
[[UIApplication sharedApplication] statusBarOrientation]
El método [[UIDevice currentDevice] orientation]
devuelve una serie de orientaciones más allá de la orientación vertical y horizontal. Soy consciente de que estoy comprobando 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 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, asumo 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 devolvió UIDeviceOrientationUnknown
. Busco SO y Google para alguien que haya enfrentado este problema. Me parece una tontería que Apple tenga algo más que LandscapeLeft/Right
y PortraitUp/Down
por sus orientaciones.
Lo que realmente necesito es la orientación de APPS, no los dispositivos, ya que estos a veces están en desacuerdo. ¿Algún consejo?