Xcode: obtenir un avertissement " conversion implicite à partir du type d'énumération UIDeviceOrientation"

Avertissement complet:

Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'

Obtenir sur la ligne:

[self orientationChanged:interfaceOrientation];

C'est la méthode:

- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation 

Je ne peux pas vraiment comprendre d'où vient cet avertissement.

23
demandé sur Vadim Kotov 2011-08-10 22:16:55

1 réponses

UIDeviceOrientation se réfère à l'orientation physique de l'appareil alors que UIInterfaceOrientation fait référence à l'orientation de l'interface utilisateur. Lorsque vous appelez votre méthode

[self orientationChanged:interfaceOrientation];

Vous passez probablement un UIDeviceOrientation quand vous devriez, selon la méthode, utiliser un UIInterfaceOrientation.

Juste pour développer un peu ce point, UIDeviceOrientation est une propriété de la classe UIDevice, et il y a ces valeurs possibles:

UIDeviceOrientationUnknown - ne Peut pas être déterminé

UIDeviceOrientationPortrait - bouton d'accueil face vers le bas

UIDeviceOrientationPortraitUpsideDown - bouton d'accueil vers le haut

UIDeviceOrientationLandscapeLeft - bouton D'accueil vers la droite

UIDeviceOrientationLandscapeRight - bouton D'accueil vers la gauche

UIDeviceOrientationFaceUp - L'appareil est plat, avec écran vers le haut

UIDeviceOrientationFaceDown - L'appareil est plat, avec écran vers le bas

Pour UIInterfaceOrientation, c'est une propriété de UIApplication et ne contient que 4 possibilités qui correspondent à l'orientation de la barre d'état:

UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,

UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,

UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,

UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft

Pour obtenir UIDeviceOrientation, vous utilisez

[[UIDevice currentDevice] orientation]

Et pour obtenir UIInterfaceOrientation, vous utilisez

[[UIApplication sharedApplication] statusBarOrientation] 
90
répondu PengOne 2011-08-10 18:22:58