【发布时间】:2020-08-08 11:45:42
【问题描述】:
我正在尝试在 SwiftUI 中创建一个简单的游戏,并且我正在尝试获得类似于 navigationView 上的向后滑动手势,但没有将我的视图放在 navigationView 中。由于这是一个游戏,添加 naviagationView 会显得格格不入。
这是我目前所拥有的:
struct SwipingView : View {
@State private var dragAmount = CGSize.zero
@GestureState private var position = CGSize.zero
func addToPosition(translation:CGSize) -> CGSize {
return CGSize(width: dragAmount.width + translation.width, height: dragAmount.height + translation.height)
}
var body: some View{
return ZStack(){
Rectangle().fill(Color.red).frame(width: 100, height:400).scaleEffect(x:5,y:1,anchor: .leading)
.offset(x: 190)
.offset(x: addToPosition(translation: position).width )
.gesture(
DragGesture(minimumDistance: 20)
.updating(self.$position){ value, state, translation in
state = value.translation
}
.onEnded{ value in
if value.translation.width > 50 {
guard position.width + self.addToPosition(translation: CGSize(width:330, height:0)).width < 330-1 else {
return print("too far right")
}
self.dragAmount = self.addToPosition(translation: CGSize(width:330, height:0))
} else {
guard position.width + self.addToPosition(translation: CGSize(width:-330, height:0)).width > -330-1 else {
return print("too far left")
}
self.dragAmount = self.addToPosition(translation: CGSize(width:-330, height:0))
}
}
)
}.animation(Animation.linear)
}
}
我还是 swift 的新手,所以即使我查看了堆栈溢出并且找不到我正在寻找的确切内容,我也可能缺少一些明显的东西。
这就是它的样子。如您所见,我可以将视图从视图上的任何位置滑开,但我想仅在左边缘或什至仅在左侧的前 5% 处滑开。 p>
【问题讨论】: