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.