Xcode: получение предупреждения «неявное преобразование из типа перечисления UIDeviceOrientation» - PullRequest
23 голосов
/ 10 августа 2011

Полное предупреждение:

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

Получение на линии:

[self orientationChanged:interfaceOrientation];

Это метод:

- (void)orientationChanged:(UIInterfaceOrientation)interfaceOrientation 

Я не могу понять, откуда это предупреждение.

1 Ответ

91 голосов
/ 10 августа 2011

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] 
...