Il y a 3 façons d'obtenir l'orientation actuelle de l'interface que je connais:
self.interfaceOrientation
[[UIApplication sharedApplication] statusBarOrientation]
[[UIDevice currentDevice] orientation]
Quelles sont les différences entre eux?
self.interfaceOrientation
renvoie UIInterfaceOrientation, orientation actuelle de l'interface. C'est une propriété dans UIViewController, vous pouvez accéder à celle-ci uniquement dans les classes UIViewController.
[[UIApplication sharedApplication] statusBarOrientation]
renvoie UIInterfaceOrientation, l'orientation actuelle de la barre d'état de l'application. Vous pouvez accéder à cette propriété à tout moment de votre application. Mon expérience montre que c'est un moyen plus efficace de récupérer l'orientation réelle de l'interface.
[[UIDevice currentDevice] orientation]
renvoie IDeviceOrientation, orientation du périphérique. Vous pouvez accéder à cette propriété à tout moment de votre application. Mais notez que UIDeviceOrientation n'est pas toujours UIInterfaceOrientation. Par exemple, lorsque votre appareil se trouve sur une table ordinaire, vous pouvez recevoir une valeur inattendue.
[[UIApplication sharedApplication] statusBarOrientation]
- il est toujours égal à l'une des quatre valeurs: portrait, paysage à gauche, paysage à droite et portrait à l'envers.
[[UIDevice currentDevice] orientation]
- celui-ci est égal à quatre valeurs standard et également: inconnu, face vers le haut ou face vers le bas.
[[UIApplication sharedApplication] statusBarOrientation]
- est le moyen le plus préféré pour obtenir l'orientation de l'interface.
Tous les contrôleurs de vue ont cette fonction
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
//fromInterfaceOrientation.isLandscape
}
ou vous pouvez utiliser l'orientation de la barre d'état
if UIApplication.sharedApplication().statusBarOrientation == UIInterfaceOrientation.Portrait {
//
}
Fonctionne dans iOS 9 :)