Objective c Xcode:获取警告“;枚举类型UIDeviceOrientation的隐式转换;

Objective c Xcode:获取警告“;枚举类型UIDeviceOrientation的隐式转换;,objective-c,xcode,uiinterfaceorientation,Objective C,Xcode,Uiinterfaceorientation,全面警告: Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation' 让它上线: [self orientationChanged:interfaceOrientation]; 方法如下: - (void)orientationChanged:(UIInterfaceOrientation)interfaceOri

全面警告:

Implicit conversion from enumeration type 'UIInterfaceOrientation' to different enumeration type 'UIDeviceOrientation'
让它上线:

[self orientationChanged:interfaceOrientation];
方法如下:

- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation 

我真的不明白这个警告是从哪里来的。

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

[self orientationChanged:interfaceOrientation];
根据该方法,当您应该使用
UIInterfaceOrientation
时,您很可能正在向其传递
UIDeviceOrientation

仅对这一点进行一点扩展,
UIDeviceOrientation
UIDevice
类的一个属性,有以下可能的值:

UIDeviceOrientationUnknown
-无法确定

ui设备方向纵向
-主页按钮朝下

UIDeviceOrientationGraphics UpsideDown
-主页按钮面朝上

UIDeviceOrientation和scapeLeft
-主页按钮朝向右侧

UIDeviceOrientationAndscapeRight
-主页按钮朝向左侧

UIDeviceOrientationFaceUp
-设备是平面的,屏幕朝上

UIDeviceOrientationFaceDown
-设备是平面的,屏幕朝下

对于
UIInterfaceOrientation
,它是
UIApplication
的一个属性,只包含4种可能,对应于状态栏的方向:

UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,

UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,

UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,

UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
要获取
UIDeviceOrientation
,请使用

[[UIDevice currentDevice] orientation]
[[UIApplication sharedApplication] statusBarOrientation] 
要获得
UIInterfaceOrientation
,您可以使用

[[UIDevice currentDevice] orientation]
[[UIApplication sharedApplication] statusBarOrientation] 

又碰到这个问题,你又救了我。我希望我能投你两次票。