web-dev-qa-db-fra.com

Différentes façons d'obtenir l'orientation actuelle de l'interface?

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?

63
Anh Do

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.

112
beryllium

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

25
holodnyalex

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 :)

1
Eduardo Irias