Pregunta

¿Cómo averiguar si el UideviceorientationFaceUp es un paisaje o cara de retrato?

¿Alguien me puede decir?

¿Fue útil?

Solución

No es posible, porque el acelerómetro no puede detectar la rotación alrededor del eje Z. En un iPhone 4, tal vez podría usar el giroscopio para esto (usando Coremotion), pero UIDevice No tiene una API para esto. Luego también tendría que definir cuál es la posición inicial, porque no puede detectar en qué dirección está el usuario desde el punto de vista del dispositivo.

Otros consejos

UIDeviceOrientation Solo le dirá la orientación del dispositivo físico. Necesita usar métodos que usen UIInterfaceOrientation (de UIApplication) tomar decisiones dependiendo de si la pantalla está en el modo de retrato y paisaje.

Puedes usar UIInterfaceOrientationIsLandscape() y UIInterfaceOrientationIsPortrait() con un UIInterfaceOrientation también.

Me doy cuenta de que esta es una vieja pregunta ahora, pero mirar las respuestas que todos están siendo demasiado pedantes. En caso de que alguien más tropieza con esto:

La respuesta a su problema es que usted mantenga una variable secundaria que es cualquiera de sus orientaciones aceptadas.

Cuando entra la notificación de orientación del dispositivo, simplemente mire la orientación entrante y vea si es aceptable (retrato/paisaje, no enfrentamiento/Facedown), luego actualice su variable secundaria y finalmente active una interfaz de usuario/aplicación de su secundaria usando su secundaria variable como fuente de orientación.

Esto tendrá el efecto de bloquear la orientación a la orientación del "último bien conocido".

UideviceorientationFaceUp y UideviceOrientation -foedOwn son orientaciones para cuando el dispositivo se coloca plano (como en una tabla). El retrato y el paisaje no tienen sentido en estos casos.

No hay forma de que puedas averiguar por la orientación. He encontrado una solución.

CGRect screenBounds = [[UIScreen mainScreen]bounds];

if(screenBounds.size.width > screenBounds.size.height)
{
    // This means FaceUP/Down is in Landscape
}
else
{
    // This means FaceUp/Down is in Portrait
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top