2011-08-10 5 views
21

aviso completo:Xcode: Obtención de advertencia "conversión implícita de tipo de enumeración UIDeviceOrientation"

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

Hacer las cosas en la línea:

[self orientationChanged:interfaceOrientation]; 

Este es el método:

- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation 

Realmente no puedo entender de dónde viene esta advertencia.

Respuesta

89

UIDeviceOrientation se refiere a la orientación física del dispositivo, mientras que UIInterfaceOrientation se refiere a la orientación de la interfaz de usuario. Cuando se llama a su método de

[self orientationChanged:interfaceOrientation]; 

es muy probable que pasarlo un UIDeviceOrientation cuando se debe, de acuerdo con el método, se utiliza un UIInterfaceOrientation.

Sólo para ampliar sobre este punto un poco, UIDeviceOrientation es una propiedad de la clase , y hay estos posibles valores:

UIDeviceOrientationUnknown -

UIDeviceOrientationPortrait No se puede determinar - botón de Inicio hacia abajo

UIDeviceOrientationPortraitUpsideDown - botón de inicio hacia arriba

UIDeviceOrientationLandscapeLeft - botón de inicio frente a la derecha

UIDeviceOrientationLandscapeRight - botón de inicio frente a la izquierda

UIDeviceOrientationFaceUp - El dispositivo es plano, con la pantalla hacia arriba

UIDeviceOrientationFaceDown - El dispositivo es plano, con la pantalla hacia abajo

Como para UIInterfaceOrientation, es una propiedad de UIApplication y solo contiene 4 posibilidades que corresponden a la orientación de la barra de estado:

UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait, 

UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, 

UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, 

UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft 

Para obtener UIDeviceOrientation, se utiliza

[[UIDevice currentDevice] orientation] 

y para obtener UIInterfaceOrientation, se utiliza

[[UIApplication sharedApplication] statusBarOrientation] 
+0

olvidaba decir gracias por esto. Entonces ... Gracias –

+2

Acabo de toparme con este problema otra vez y me salvaste de nuevo. Ojalá pudiera votarte dos veces. –

Cuestiones relacionadas