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.