Исправлено отклонение CMMotionManager для текущей ориентации UIInterfaceOrientation.IOS

Программируем под IOS
Ответить
Anonymous
 Исправлено отклонение CMMotionManager для текущей ориентации UIInterfaceOrientation.

Сообщение Anonymous »

Я использую CMMotionManger для получения показаний отклонения от курса с помощью следующего кода.

Независимо от ориентации UIInterfaceOrientation, я пытаюсь получить показания минус 1,5708 рад, если отклонение от курса на 90 градусов вправо, и положительное значение 1,5708 рад, если устройство повернуто на 90 градусов влево (полярность не важна, поскольку при необходимости ее можно поменять местами).

Я могу заставить его делать то, что хочу, когда устройство находится в портретной ориентации. В радианах это дает мне около -1,5708, когда устройство поворачивается на 90 градусов вправо, и около 1,5708 рад, когда вращается влево.

Но когда устройство находится в портретная перевернутая ориентация, когда рыскание поворачивается вправо, оно начинается от -2,4 до примерно -3,14, затем скачет до ~3,14 и до 2,6. Как сделать его плавным и непрерывным от 0 до -1,5708 рад?

Мне также нужно скорректировать ландшафт слева и справа.

if motionManager == nil {
motionManager = CMMotionManager()
}

let updateInterval: NSTimeInterval = 1 / 24.0 //24hz

if (motionManager!.accelerometerAvailable) {
motionManager!.accelerometerUpdateInterval = updateInterval

motionManager!.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (motion:CMDeviceMotion?, error: NSError?) -> Void in

print("\(motion!.attitude.yaw)")

switch (TDTDeviceUtilites.interfaceOrientation()) {
case UIInterfaceOrientation.Portrait:
// No correction needed
break;

case UIInterfaceOrientation.PortraitUpsideDown:
//need to apply correction
break;

case UIInterfaceOrientation.LandscapeRight:
//need to apply correction
break;

case UIInterfaceOrientation.LandscapeLeft:
//need to apply correction
break;
}
})
}


Подробнее здесь: https://stackoverflow.com/questions/379 ... rientation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»