Обнаружение устройства iPhone является плоским
-
21-09-2019 - |
Вопрос
Чтобы определить ориентацию телефона при съемке, я использую
orientation == UIDeviceOrientationLandscapeRight
orientation == UIDeviceOrientationPortraitUpsideDown
orientation == UIDeviceOrientationPortrait
orientation == UIDeviceOrientationLandscapeLeft
Но они работают, если снимок делается сбоку.Как мне проверить, наклонен ли iPhone вниз, чтобы быть плоским, напримерпри съемке с воздуха?
Решение
Существует другая константа для ориентации устройства:
typedef enum {
UIDeviceOrientationUnknown,
UIDeviceOrientationPortrait,
UIDeviceOrientationPortraitUpsideDown,
UIDeviceOrientationLandscapeLeft,
UIDeviceOrientationLandscapeRight,
UIDeviceOrientationFaceUp,
UIDeviceOrientationFaceDown
} UIDeviceOrientation;
Вы можете найти их здесь: Ссылка на класс UIDevice
Другие советы
Взгляните на UIAccelerometer
(и UIAccelerometerDelegate
) классы, которые должны использоваться для обнаружения перемещений устройства.
Редактировать: В справочнике по классу UIAccelerometer есть ссылки на 3 связанных образца: Акселерометрический график, Глгравитация и Глянцевая краска
есть пример приложения на http://developer.apple.com/iphone это отображает необработанные данные с акселерометра.Установите его на свое устройство и посмотрите, какие данные вы получаете.
Пример приложения поставляется с опцией (я думаю, это "демпфирование"), которая эффективно устраняет гравитацию.Вы не хотите этого делать - на самом деле гравитация - это то, что будет "разгонять" ваше устройство по оси Z, когда оно плоское...