Swift 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