¿Cómo puedo comprobar mediante programación si la orientación del dispositivo está bloqueado en iOS? Yo no veo nada en UIDevice. Sé que se supone que esta es transparente para la aplicación. Pero me gustaría cambiar la forma de mostrar el contenido si la orientación es bloqueado (como la aplicación de Youtube; es bloqueos a horizontal en lugar de vertical). Esto debe ser posible.
- La forma de YouTube ¿no es perfecto, ya que si a la izquierda y entró de nuevo a la app, el vídeo va a girar a vertical si es bloqueado.
No hay manera de cómo detectar si la orientación está bloqueado o no. Aplicación de YouTube no encaja en el paisaje, sólo muestra la película en la orientación horizontal, pero al girar el iPhone, la película gira así (si no hay bloqueo de orientación).
IOW bloqueo de orientación es manejada por un sistema transparente para la aplicación.
Si quieres conseguir esta funcionalidad – acaba de mostrar su punto de vista en el modo de paisaje, incluso si el iPhone está en modo de retrato y luego activar la rotación de la vista. Se comportará de la misma manera como la aplicación de YouTube.
Actualización para el comentario:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) toInterfaceOrientation { toInterfaceOrientation == UIInterfaceOrientationLandscapeRight;}
Pero este, a continuación, desactiva la rotación automática.shouldAutorotateToInterfaceOrientation:
método está en desuso, pero el nuevo métodopreferredInterfaceOrientationForPresentation
le dará el mismo comportamiento, como este fragmento hace sin ningún código adicional.Puede utilizar el
UIAccelerometer
de la clase para determinar la orientación del teléfono en gran detalle. Si el vector de aceleración entra en un estado donde su mayor absoluta de la componente en el eje X, que es una orientación horizontal. En teoría, esto podría ser utilizado para detectar la orientación de bloqueo: si, dentro de unos pocos segundos de que esto ocurra, el controlador NO recibe una llamada ashouldRotateToInterfaceOrientation
, y el[[UIDevice currentDevice] orientation]
propiedad no está en el paisaje, entonces, usted puede asumir con seguridad que el usuario tiene la orientación bloqueado.Esta complicado, y tiene un retraso debido a que
shouldRotateToInterfaceOrientation
será llamado así después de que el vector real en realidad ha entrado en un paisaje de la región. La idea es un poco de un hack, y probablemente debería reconsiderar por qué usted realmente necesita para presentar vistas al paisaje cuando el usuario tiene una preferencia de no mostrarlos.No creo que usted puede averiguar si la orientación es bloqueado. He mirado por los que hace algún tiempo y no encontré nada. Lo que puedes hacer es ignorar la orientación y que sólo ofrece el paisaje, en su opinión, el controlador…, se mostrará en el paisaje, no importa qué.
Creo que esto es lo que youtube está haciendo así.
-[UIViewController shouldRotateToInterfaceOrientation:]
es llamada cuando el bloqueo es activar o desactivar.