Hay 3 maneras de conseguir actual de la interfaz de orientación, que yo sepa:

  • self.interfaceOrientation
  • [[UIApplication sharedApplication] statusBarOrientation]
  • [[UIDevice currentDevice] orientation]

¿Cuáles son las diferencias entre ellos?

InformationsquelleAutor Anh Do | 2011-11-01

3 Comentarios

  1. 112

    self.interfaceOrientation devuelve UIInterfaceOrientation, orientación actual de la interfaz. Se trata de una propiedad en UIViewController, usted puede tener acceso a este solo en UIViewController clases.

    [[UIApplication sharedApplication] statusBarOrientation] devuelve UIInterfaceOrientation, orientación actual de la aplicación de la barra de estado. Usted puede tener acceso a la propiedad en cualquier punto de la aplicación. Mi experiencia demuestra que la manera más eficaz para recuperar real de la interfaz de orientación.

    [[UIDevice currentDevice] orientation] devuelve UIDeviceOrientation, de la orientación del dispositivo. Usted puede tener acceso a la propiedad en cualquier punto de la aplicación. Pero tenga en cuenta que UIDeviceOrientation no es siempre UIInterfaceOrientation. Por ejemplo, cuando el dispositivo está en una mesa plana puede recibir valor inesperado.

    • una respuesta más sobre la interfaz de orientación – stackoverflow.com/a/3897243/194544
    • +1, Muy buena explicación :))
    • Puede usted explicar por qué orientation existe si puede ser malo?
    • La orientación del dispositivo no es necesaria la orientación de la interfaz de usuario. E. g. si tu aplicación sólo admite la orientación horizontal y gire el dispositivo a la orientación vertical, la orientación del dispositivo se dice que es el retrato, pero, a continuación, la orientación de la interfaz de usuario es todavía paisaje (y también la estancia de paisaje). También si el dispositivo está plana sobre una mesa, se puede decir con certeza lo que su orientación es, pero sabe que para asegurarse de que la orientación si la interfaz de usuario en todo momento.
    • Sólo una corrección, no es un «valor Inesperado» cuando el dispositivo está en una mesa plana. UIDeviceOrientation tiene un total de 7 valores declarados en UIDevice.h, que incluye UIDeviceOrientationUnknown , UIDeviceOrientationFaceUp, UIDeviceOrientationFaceDown demasiado. Usted puede iniciar sesión deviceOrientation valor y ver si es igual a 5 o 6 para hacia arriba o hacia abajo.
    • self.interfaceOrientation está en desuso en iOS 8.
    • también ios centro de notificaciones y el centro de control de ios influye en [[UIDevice currentDevice] orientation] valor. Por ejemplo, su aplicación es compatible con el modo de retrato único. En este caso tendrás Centro de Notificaciones en el panel de Control y panel central que viene de la izquierda y la derecha (no de la parte superior y la parte inferior). En este caso, usted recibirá Retrato de valores en [[UIDevice currentDevice] orientation] cuando el dispositivo está realmente en el Paisaje.

  2. 25

    [[UIApplication sharedApplication] statusBarOrientation] – siempre es igual a uno de los cuatro valores: el retrato, el paisaje de la izquierda, el paisaje derecho y retrato boca abajo.

    [[UIDevice currentDevice] orientation] – este uno es igual a standart cuatro valores, y también: desconocido, boca arriba o boca abajo.

    [[UIApplication sharedApplication] statusBarOrientation] – es más forma preferida para obtener la interfaz de orientación.

    • Además, [[UIDevice currentDevice] orientation] «… siempre devuelve 0, a menos que la orientación de las notificaciones se han habilitado llamando beginGeneratingDeviceOrientationnotifications.» (Docs.)
    • 12 migrañas y 5 úlceras después, puedo confirmar que [[UIApplication sharedApplication] statusBarOrientation] es más fiable y simple de la detección y la gestión de los cambios de orientación.
  3. 1

    Ver todos los controladores tienen esta función

       override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
              //fromInterfaceOrientation.isLandscape
       }

    o puede el usuario la barra de estado de la orientación

       if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait {
            //
       }

    Funciona en iOS 9 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here