【问题标题】:SwiftUI drag gesture jumpSwiftUI 拖动手势跳转
【发布时间】:2020-04-08 04:12:10
【问题描述】:

Swift 5、iOS 13.x

我得到了这个超级简单的应用程序,它让我可以通过使用 SwiftUI 的偏移量来拖动视图,当它停止时,我会重置偏移量和位置。第一次运行良好,但每次我回去再次拖动它时,它会在我释放按钮时跳跃。我该如何解决这个问题......我发现了一些提到插图的东西?和insets有关吗?

现在我知道这用一些不同的代码 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)
}
}

【问题讨论】:

    标签: ios swift swiftui drag gesture


    【解决方案1】:

    我的直觉告诉您,您可能正在处理与 SafeArea EdgeInsets 相关的问题。很难说。如果您有兴趣,我制作了两个关于拖动手势和点击手势的视频,以在您点击时创建视图并在您点击之前生成的视图时拖动它们:

    https://www.youtube.com/watch?v=x3mzLhPfLaE&list=PLEHYNiA7SPcP9zzQYHAN1T27w4cwG_f5i

    https://www.youtube.com/watch?v=V0F5ZuJgzoY&list=PLEHYNiA7SPcP9zzQYHAN1T27w4cwG_f5i&index=2

    【讨论】:

    • 这是一个很好的答案,我观看了这两个视频并学到了一些新的东西,将尝试调查您提到的 safeareaEdgeInsets,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多