Xcode: Getting warning “implicit conversion from enumeration type UIDeviceOrientation”

丶灬走出姿态 提交于 2019-11-27 06:59:46

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] 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!