это нужно добавить 1 каждый раз, когда мой телефон поворачивается на 360 градусов, этот код запускается, но я переворачиваю свой телефон, и tiltOut остается на 0 все время.
var tiltOut = 0
@State private var prevTime = DispatchTime.now()
func startGyro() {
motionManager.gyroUpdateInterval = 0.2
motionManager.startGyroUpdates(to: OperationQueue.current!) { (data, Error) in
if let myData = data {
let currTime = DispatchTime.now()
var dt = 0
let interval = self.prevTime.distance(to: currTime)
if case .milliseconds(let value) = interval {
dt = value
}
self.prevTime = currTime
// assuming rotationRate is in degrees/millisecond.
let dTheta: CGFloat = CGFloat(myData.rotationRate.y) * CGFloat(dt)
// If not milliseconds, convert dt to correct time unit
// If rotationRate is in radians, convert to degrees or make future comparison check for 2*pi instead of 360 degrees
totalRotation += dTheta
if totalRotation > 360 - delta && totalRotation < 360 + delta {
tiltOut = tiltOut + 1
self.labelText = "\(tiltOut)"
totalRotation -= 360
}
}
}
}
}