Swift 如何使用DragGesture创建自己的ScrollView?

Swift 如何使用DragGesture创建自己的ScrollView?,swift,swiftui,Swift,Swiftui,我试图在自己的自定义组件中模拟ScrollView行为 我遇到的问题是滚动动画。据我所知,我可以使用predictededtranslationobject来获得拖动手势的预测位置。但我不知道应该使用哪种缓和功能来模拟默认的ScrollVieweasing 这是我的密码 struct ViewContent: View { @State var offsetY: CGFloat = 0 var body: some View { View {

我试图在自己的自定义组件中模拟
ScrollView
行为

我遇到的问题是滚动动画。据我所知,我可以使用
predictededtranslation
object来获得拖动手势的预测位置。但我不知道应该使用哪种缓和功能来模拟默认的
ScrollView
easing

这是我的密码

struct ViewContent: View {
    @State var offsetY: CGFloat = 0

    var body: some View {
        View {

        }
        .offset(y: offsetY)
        .gesture(
          DragGesture()
            .onChange { value in
                offsetY = value.translation.height
            }
            .onEnded { value in 
                let nextScrollPosition = value.predictedEndTranslation.height

                withAnimation(???) { // What easing to use?
                    offsetY = nextScrollPosition
                }
            }
        )
    }
}
我将使用
.spring()
,因为这个预设动画将使您接近通用的scrollview动画

withAnimation(.spring()) { // User .spring()
    offsetY = nextScrollPosition
}

谢谢,我尝试使用这个
.spring()
,但不确定这是否是最好的方法。我可以问一下为什么不能使用常规的scrollview吗?我想实现默认scrollview不支持的快照间隔(在最近的行或列停止,而不是在中间或其他地方)。这是否回答了您的问题?