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]