2011-11-01 12 views

Respuesta

111

self.interfaceOrientation devuelve UIInterfaceOrientation, orientación actual de la interfaz. Es una propiedad en UIViewController, puede acceder a esta solo en las clases de UIViewController.

[[UIApplication sharedApplication] statusBarOrientation] devuelve UIInterfaceOrientation, orientación actual de la barra de estado de la aplicación. Puede acceder a esa propiedad en cualquier punto de su aplicación. Mi experiencia muestra que es una forma más efectiva de recuperar la orientación real de la interfaz.

[[UIDevice currentDevice] orientation] devuelve UIDeviceOrientation, orientación del dispositivo. Puede acceder a esa propiedad en cualquier punto de su aplicación. Pero tenga en cuenta que UIDeviceOrientation no siempre es UIInterfaceOrientation. Por ejemplo, cuando su dispositivo está en una tabla simple, puede recibir un valor inesperado.

+0

Gracias, ahora está claro para mí! –

+1

una respuesta más con respecto a la orientación de la interfaz - http://stackoverflow.com/a/3897243/194544 – beryllium

+0

+1, Muy buena explicación :)) – mAc

23

[[UIApplication sharedApplication] statusBarOrientation] - siempre es igual a uno de los cuatro valores: retrato, paisaje a la izquierda, paisaje a la derecha y retrato al revés.

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

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

+0

Además, '[[UIDevice currentDevice] orientación] '" ... siempre devuelve 0 a menos que las notificaciones de orientación se hayan habilitado llamando a beginGeneratingDeviceOrientationNotifications ". (Docs.) – Olie

+8

12 migrañas y 5 úlceras después, puedo confirmar que '[[UIApplication sharedApplication] statusBarOrientation]' es una forma más confiable y simple de detectar y administrar cambios de orientación. –

1

Todos los controladores de vista tienen esta función

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

o que pueda usuario la orientación de la barra de estado

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

Obras en iOS 9 :)

Cuestiones relacionadas