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不支持的快照间隔(在最近的行或列停止,而不是在中间或其他地方)。这是否回答了您的问题?