gpt4 book ai didi

ios - 有没有更好的方法来处理来自 CLLocationManager 的大量标题数据以呈现在 UI 上?

转载 作者:行者123 更新时间:2023-11-30 12:29:56 24 4
gpt4 key购买 nike

我可以从 CLLocationManager 获取标题数据。

    locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.headingFilter = 0.2
locationManager.headingOrientation = CLDeviceOrientation.landscapeRight
locationManager.startUpdatingHeading()
locationManager.delegate = self

我可以使用

func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
let headingDegree = newHeading.trueHeading
// Keep update CALayer
scrollLayer.scroll(to: CGPoint(x: headingDegree, y: 20.0))
}

更新用户界面。 UI 是 CAScrollLayer 顶部的标题点击。

问题:

当 iPhone 偏航太快时,标题带会持续晃动。我认为滚动事件不够快,无法处理大量的标题数据。

问题:

有没有更好的方法来使用 CAScrollLayer 处理标题更新数据?

最佳答案

听起来您需要进行一些平滑处理。需要明确的是,平滑(最基本的形式)是随着时间的推移取平均值。假设您想要获取最近 60 次左右更新的平均值,那么您将拥有一个用于计算平均值的值数组:

var arr: [Double] = []

func average(latestVal: Double) -> Double
{
if arr.count >= 60 {
arr.remove(at: 0)
}
arr.append(latestVal)

let total = arr.reduce(0, { $0 + $1 })

return total / Double(arr.count)
}

这确实是在 Swift 中实现队列的绝佳机会,您可以在 here 上找到详细信息。 .

关于ios - 有没有更好的方法来处理来自 CLLocationManager 的大量标题数据以呈现在 UI 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com