objective-c xcode uiinterfaceorientation

objective c - Xcode: Obtener advertencia "conversión implícita de enumeración tipo UIDeviceOrientation"



objective-c uiinterfaceorientation (1)

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

[self orientationChanged:interfaceOrientation];

lo más probable es que le esté pasando una UIDeviceOrientation cuando debería, de acuerdo con el método, utilizar una UIInterfaceOrientation .

Solo para ampliar un poco este punto, UIDeviceOrientation es una propiedad de la clase UIDevice , y existen estos valores posibles:

UIDeviceOrientationUnknown : no se puede determinar

UIDeviceOrientationPortrait - Botón de inicio hacia abajo

UIDeviceOrientationPortraitUpsideDown - Botón de inicio hacia arriba

UIDeviceOrientationLandscapeLeft - Botón de inicio hacia la derecha

UIDeviceOrientationLandscapeRight - Botón de inicio hacia la izquierda

UIDeviceOrientationFaceUp : el dispositivo es plano, con la pantalla hacia arriba

UIDeviceOrientationFaceDown : el dispositivo es plano, con la pantalla hacia abajo

En cuanto a 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 , usas

[[UIDevice currentDevice] orientation]

y para obtener UIInterfaceOrientation , usas

[[UIApplication sharedApplication] statusBarOrientation]

Advertencia completa:

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

Poniéndolo 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.