Swiftui 获得阻力速度的最佳方法是什么?

Swiftui 获得阻力速度的最佳方法是什么?,swiftui,gesture,draggesture,Swiftui,Gesture,Draggesture,我想知道怎样才能获得DragGestureVelocity 我理解这个公式的工作原理以及如何手动获取它,但当我这样做的时候,苹果的回报就不存在了(至少在某些时候它是非常不同的) 我有以下代码片段 struct SecondView: View { @State private var lastValue: DragGesture.Value? private var dragGesture: some Gesture { DragGesture()

我想知道怎样才能获得
DragGesture
Velocity

我理解这个公式的工作原理以及如何手动获取它,但当我这样做的时候,苹果的回报就不存在了(至少在某些时候它是非常不同的)

我有以下代码片段

struct SecondView: View {
    @State private var lastValue: DragGesture.Value?

    private var dragGesture: some Gesture {
        DragGesture()
             .onChanged { (value) in
                   self.lastValue = value
             }
             .onEnded { (value) in
                   if lastValue = self.lastValue {
                         let timeDiff = value.time.timeIntervalSince(lastValue.time)
                         print("Actual \(value)")   // <- A
                         print("Calculated: \((value.translation.height - lastValue.translation.height)/timeDiff)") // <- B
                   }
             }

     var body: some View {
          Color.red
              .frame(width: 50, height: 50)
              .gesture(self.dragGesture)
     }
}
struct SecondView:View{
@国家私有var lastValue:DragGesture.Value?
二等兵var dragGesture:一些手势{
德拉格斯特尔()
.onChanged{(值)在中
self.lastValue=value
}
.onEnded{(值)在
如果lastValue=self.lastValue{
设timeDiff=value.time.timeintervalences(lastValue.time)
打印(“实际\(值)”)/如下所示:

let sss = "\(value)"
//Intercept string
let start = sss.range(of: "valuePerSecond: (")
let end = sss.range(of: ")))")
let arr = String(sss[(start!.upperBound)..<(end!.lowerBound)]).components(separatedBy: ",")
print(Double(arr.first!)!)
let sss=“\(值)”
//截取串
let start=sss.range(of:“valuePerSecond:(“”)
让end=sss.range(of:“)”)
设arr=String(sss[(start!.upperBound)。。