ios - SwiftUI 拖动手势跳转
问题描述
斯威夫特 5,iOS 13.x
我得到了这个超级简单的应用程序,它让我可以通过使用 SwiftUI 的偏移量来拖动视图,当它停止时,我会重置偏移量和位置。第一次运行良好,但每次我回去再次拖动它时,它会在我释放按钮时跳跃。我该如何解决这个问题......我发现了一些提到插图的东西?它与插图有关吗?
现在我知道这用一些不同的代码kontiki回答了这个问题,但我想了解我的解决方案有什么问题。
struct ContentView: View {
@State var dragOffset = CGSize.zero
@State var position:CGPoint = CGPoint(x:0,y:0)
var body: some View {
VStack {
Circle()
.frame(width: 12, height: 128, alignment: .center)
}.offset(x: self.dragOffset.width, y: self.dragOffset.height)
.gesture(DragGesture(coordinateSpace: .global)
.onChanged({ ( value ) in
self.dragOffset = CGSize(width: value.translation.width, height: value.translation.height)
})
.onEnded { ( value ) in
self.dragOffset = .zero
self.position = value.location
}
).position(position)
}
}
解决方案
我的直觉告诉您,您可能正在处理与 SafeArea EdgeInsets 相关的问题。很难说。如果您有兴趣,我制作了两个有关拖动手势和点击手势的视频,以在您点击时创建视图,并在您点击之前生成的视图时拖动它们:
https://www.youtube.com/watch?v=x3mzLhPfLaE&list=PLEHYNiA7SPcP9zzQYHAN1T27w4cwG_f5i
https://www.youtube.com/watch?v=V0F5ZuJgzoY&list=PLEHYNiA7SPcP9zzQYHAN1T27w4cwG_f5i&index=2
推荐阅读
- mysql - 如何对联合中子查询的操作求和 1 行
- javascript - Vue:绑定来自中间人的多个值
- visual-studio-code - Intellisense 自动完成功能不适用于 vscode 中的 wsl
- python - 将python数据帧转换为字典,然后转换为字符串
- python - 使用for循环将多个数据框列合并为一个
- python - 如何定义 json 的结构以将其转换为 csv
- android - MessagePack 序列化反序列化在两个平台上的结果不同
- java - 反序列化时已经出现 POJO 问题
- python - python:在治疗向量中找不到对照组0级
- php - 当用户未填写字段时如何显示错误?