¿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.
InformationsquelleAutor wombat57 | 2011-03-23

3 Comentarios

  1. 7

    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:

    .h
    
    BOOL rotationEnabled;
    
    .m
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
      return rotationEnabled || ( toInterfaceOrientation == UIInterfaceOrientationLandscapeRight );
    }
    
    - (void)viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated];
      rotationEnabled = YES;
    }
    • La única forma que conozco para mostrar una vista en una orientación particular es: - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) toInterfaceOrientation { toInterfaceOrientation == UIInterfaceOrientationLandscapeRight;} Pero este, a continuación, desactiva la rotación automática.
    • Mira mi respuesta actualizada. Un ejemplo de cómo mostrar inicialmente en LandscapeRight y, a continuación, permitir la rotación.
    • Gracias! Que lo hace de verdad.
    • En iOS 6, la shouldAutorotateToInterfaceOrientation: método está en desuso, pero el nuevo método preferredInterfaceOrientationForPresentation le dará el mismo comportamiento, como este fragmento hace sin ningún código adicional.
    • puedes actualizar tu respuesta con ios 9+ ? Gracias
  2. 8

    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 a shouldRotateToInterfaceOrientation, 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.

  3. 0

    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í.

    • Sí, esto es lo que me temía. Pero youtube no detecta el bloqueo. Si tengo el teléfono en vertical y abrir un video, que juega en vertical (y gira como puedo rotar el teléfono). Si yo bloqueo de la orientación y hacer lo mismo, se abre en el paisaje. Este no es el comportamiento predeterminado. Youtube es la detección de la cerradura y el cambio de paisaje.
    • que se comportamiento predeterminado. El -[UIViewController shouldRotateToInterfaceOrientation:] es llamada cuando el bloqueo es activar o desactivar.
    • No importa si es llamada cuando el bloqueo de la situación, en mi aplicación no se esté ejecutando. El problema está en distinguir una bloqueado retrato de un desbloqueo del retrato. Principalmente Izzy tiene una buena solución para la rotación.

Dejar respuesta

Please enter your comment!
Please enter your name here