Full warning:
Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'
Getting it on the line:
[self orientationChanged:interfaceOrientation];
This is the method:
- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation
I can't really understand where this warning is coming from.
UIDeviceOrientation
refers to the physical orientation of the device whereas UIInterfaceOrientation
refers to the orientation of the user interface. When you call your method
[self orientationChanged:interfaceOrientation];
you are most likely passing it a UIDeviceOrientation
when you should, according to the method, be using a UIInterfaceOrientation
.
Just to expand on this point a bit, UIDeviceOrientation
is a property of the UIDevice
class, and there are these possible values:
UIDeviceOrientationUnknown
- Can't be determined
UIDeviceOrientationPortrait
- Home button facing down
UIDeviceOrientationPortraitUpsideDown
- Home button facing up
UIDeviceOrientationLandscapeLeft
- Home button facing right
UIDeviceOrientationLandscapeRight
- Home button facing left
UIDeviceOrientationFaceUp
- Device is flat, with screen facing up
UIDeviceOrientationFaceDown
- Device is flat, with screen facing down
As for UIInterfaceOrientation
, it is a property of UIApplication
and only contains 4 possibilities which correspond to the orientation of the status bar:
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
To get UIDeviceOrientation
, you use
[[UIDevice currentDevice] orientation]
and to get UIInterfaceOrientation
, you use
[[UIApplication sharedApplication] statusBarOrientation]