Как вы говорите, в каком направлении находится iPhone?

Используя информацию CMAttitude* от iPhone, вы можете определить высоту звука. Если iPhone вертикальный, то это 90º. Если он плоский, то 0º. Но у меня есть приложение, которое должно знать, если iPhone направлен вверх, вниз, вперед или назад. Есть идеи, если это можно сделать?

>     * CMAttitude *attitude;
>       CMDeviceMotion *motion = motionManager.deviceMotion;
>       attitude = motion.attitude;

1 ответ

Решение

Вы пытались проверить ориентацию устройства с помощью класса UIDevice?

Отредактировано: сначала добавьте наблюдателя, чтобы отслеживать изменение ориентации:

- (void)viewDidLoad
{
    [super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(orientationDidChange:)
                                                 name:UIDeviceOrientationDidChangeNotification object:nil];
}

В обратном вызове получить текущую ориентацию устройства

 - (void)orientationDidChange:(NSNotification*)notification
 {
     /// check current orientation
     switch ([[UIDevice currentDevice] orientation])
     {
         case UIDeviceOrientationPortrait:
             break;
         case UIDeviceOrientationPortraitUpsideDown:
             break;
         case UIDeviceOrientationLandscapeLeft:
             break;
         case UIDeviceOrientationLandscapeRight:
             break;
         case UIDeviceOrientationFaceUp:
             break;
         case UIDeviceOrientationFaceDown:
             break;
         default: /// UIDeviceOrientationUnknown
             break;
     }
 }

Это будет уведомлять вас всякий раз, когда устройство меняет свою ориентацию.

Поддерживаемые ориентации можно найти здесь: https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

Другие вопросы по тегам