完全警告:
Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'
让它上线:
[self orientationChanged:interfaceOrientation];
这是方法:
- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation
我真的不明白这个警告的来源。
答案 0 :(得分:91)
UIDeviceOrientation
指的是设备的物理方向,而UIInterfaceOrientation
指的是用户界面的方向。当你打电话给你的方法时
[self orientationChanged:interfaceOrientation];
根据该方法,您最有可能使用UIDeviceOrientation
UIInterfaceOrientation
。
为了稍微扩展这一点,UIDeviceOrientation
是UIDevice
类的属性,并且存在以下可能的值:
UIDeviceOrientationUnknown
- 无法确定
UIDeviceOrientationPortrait
- 主页按钮面朝下
UIDeviceOrientationPortraitUpsideDown
- 主页按钮朝上
UIDeviceOrientationLandscapeLeft
- 主页按钮朝右
UIDeviceOrientationLandscapeRight
- 面向左侧的主页按钮
UIDeviceOrientationFaceUp
- 设备是平的,屏幕朝上
UIDeviceOrientationFaceDown
- 设备是平的,屏幕朝下
至于UIInterfaceOrientation
,它是UIApplication
的一个属性,只包含4种与状态栏方向相对应的可能性:
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
要获得UIDeviceOrientation
,请使用
[[UIDevice currentDevice] orientation]
要获得UIInterfaceOrientation
,请使用
[[UIApplication sharedApplication] statusBarOrientation]