Xcode:获取警告“从枚举类型UIDeviceOrientation隐式转换”

时间:2011-08-10 18:16:56

标签: objective-c xcode uiinterfaceorientation

完全警告:

Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'

让它上线:

[self orientationChanged:interfaceOrientation];

这是方法:

- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation 

我真的不明白这个警告的来源。

1 个答案:

答案 0 :(得分:91)

UIDeviceOrientation指的是设备的物理方向,而UIInterfaceOrientation指的是用户界面的方向。当你打电话给你的方法时

[self orientationChanged:interfaceOrientation];

根据该方法,您最有可能使用UIDeviceOrientation UIInterfaceOrientation

为了稍微扩展这一点,UIDeviceOrientationUIDevice类的属性,并且存在以下可能的值:

  

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]