web-dev-qa-db-ja.com

Xcode:「列挙型UIDeviceOrientationからの暗黙的な変換」という警告が表示されます

完全な警告:

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

オンラインで入手する:

[self orientationChanged:interfaceOrientation];

これは方法です:

- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation 

この警告がどこから来ているのか本当に理解できません。

24
Michael Smith

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] 
93
PengOne