Как вы говорите, в каком направлении находится 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