Я пытаюсь отразить данные акселерометра в приложении iOS, вращая объект UIImageView. В настоящее время я вращаю объект на основе разницы между его текущим положением и предыдущим положением (например, если акселерометр был под углом 90 градусов, а сейчас - под углом 80 градусов, он повернет объект на -10 градусов). Этот метод имеет проблемы, хотя из-за непрочитанных изменений в акселерометре.
Таким образом, Я хочу установить вращение UIImageView, основываясь на градусной ориентации акселерометра . Например, если акселерометр читает при 65 градусах, я хочу установить ориентацию объекта UIImageView в 65 градусов. Есть ли способ сделать это?
Кроме того, я хотел бы, чтобы вращение было анимированным.
Вот мой текущий код, который вращает объект просмотра изображения на основе изменения от предыдущего Чтение:
// UIImage view declaration
@IBOutlet weak var visualizer: UIImageView!
// Rotation code where 'deg' is the change in rotation from the previous reading
UIView.animate(withDuration: 1.0, delay: 0, options: .curveLinear, animations: { () -> Void in self.visualizer.transform = self.visualizer.transform.rotated(by: CGFloat(truncating: deg))})
Обратите внимание, что я бы изменил другую часть своего кода, чтобы «град» был ориентацией акселерометра в градусах, а не изменением в градусах.