【发布时间】:2019-11-18 11:03:49
【问题描述】:
SwiftUI 处于测试阶段,所以这可能是一个错误,但我在其他 YouTube 视频中看到过类似的东西,所以也许不是,测试非常简单。我正在创建一个可以水平拖动的圆圈。
import SwiftUI
struct ContentView : View {
@State private var location = CGPoint.zero
var body: some View {
return Circle()
.fill(Color.blue)
.frame(width: 300, height: 300)
.gesture(
DragGesture(minimumDistance: 10)
.onChanged { value in
print("value.location")
print(value.location)
self.location = CGPoint(
x: value.location.x,
y: 0)
}
)
.offset(x: self.location.x, y: self.location.y)
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
这会导致以下行为:
据我所知,DragGesture onChanged 回调中的 value.location 值不应在这样的数字之间波动。看着日志,数字到处都是。我错过了什么吗?
【问题讨论】:
-
将
minimumDistance设置为0时会发生什么? -
@LinusGeffarth 大致相同,尽管跳跃可能没有那么大:imgur.com/a/qp8l0dl
-
你在
ContentView(或类似的,你叫TestView())中的代码是什么? -
TestView是我的ContentView。我将在SceneDelegate中作为根视图加载的视图切换到我正在使用的任何测试组件。不应该有什么不同,因为如果我将此代码复制粘贴到一个全新的 SwiftUI 项目中,我会看到同样的情况。事后看来,我应该这样做,所以我没有将人们与TestView混淆。 -
我编辑了上面的代码。做了一个全新的项目,只是将
Text("Hello world")改写为现在的内容,只是为了让它更干净。结果相同。感谢您呼吁消除红鲱鱼。
标签: ios swift iphone ios-simulator swiftui