Les valeurs possibles pour UIDevice.orientation
comprennent UIDeviceOrientationFaceUp
et UIDeviceOrientationFaceDown
. Alors qu'il pourrait être utile de savoir que l'appareil est à plat, ce n'est pas nous dire si elle est à plat de l'affichage d'une interface orienté en mode portrait ou paysage. Est-il un moyen de trouver l'orientation actuelle de l'IHM dans le cas où l'appareil est de retour ambigu de l'information? Je suppose que j'ai pu suivre l'orientation des événements de changement de rappeler le dernier portrait/paysage de l'orientation ou de vérifier les principaux UIView de limites de hauteur et de largeur, mais qui semble kludgey. Est-il bien sur l'appareil ou UIView que je suis absent?
Réponses
Trop de publicités?Vous pouvez obtenir l'orientation de 3 manières:
UIInterfaceOrientation orientation = self.interfaceOrientation;
retourne UIInterfaceOrientation, l'orientation actuelle de la de l'interface. C'est une propriété de UIViewController, vous pouvez accéder à ce une seule dans UIViewController classes.UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
retourne UIInterfaceOrientation, l'orientation actuelle de la l'application de la barre d'état. Vous pouvez accéder à la propriété en toute point de votre application. Mon expérience montre que c'est le plus moyen efficace pour récupérer interface réelle orientation.UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
retours UIDeviceOrientation, orientation de l'écran. Vous pouvez accéder à la propriété dans n'importe quel point de votre application. Mais notez que UIDeviceOrientation n'est pas toujours UIInterfaceOrientation. Par exemple, lorsque votre appareil est sur une plaine tableau, vous pouvez recevoir la valeur inattendue.
Dans un viewcontroller vous pouvez simplement utiliser le code:
UIInterfaceOrientation interfaceOrientation = self.interfaceOrientation;
Le UIInterfaceOrientation est un enum:
typedef enum {
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeLeft,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeRight
} UIInterfaceOrientation;
Barre d'état de l'orientation (statusBarOrientation) renvoie toujours l'interface de l'orientation , même si la barre d'état est caché.
Vous pouvez utiliser la barre d'état de l'orientation sans une-vue-contrôleur. Il vous donne le courant de l'orientation de la vue, de ne pas l'orientation du périphérique.
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
J'ai connu la même situation. Plus précisément dans ce flux:
- Contrôleur 1 charges à dire.. Portrait.
- Pousser un autre contrôleur sur la pile
- Alors que dans la 2ème manette, faites pivoter l'appareil orientation Paysage.
- Posez l'appareil à plat sur une table, et puis revenir pour le contrôleur d'origine.
À ce stade, n'importe quelle orientation vérifie que j'ai vu de retour d'une défaillance de l'orientation de 5, de sorte qu'il n'est pas directement possible de déterminer si un paysage ou portrait doit être utilisé. (Je suis en train de faire la mise en page personnalisée de positionnement par l'orientation de la base, donc c'est important d'informations)
Dans mon cas, une des limites de la largeur de vérifier la vue est utilisée pour déterminer le véritable état des choses, mais j'aimerais savoir si d'autres ont abordé différemment.