因此,在Snapchat上,向左滑动可进入聊天,向右滑动可进入故事/发现。我如何在我的应用程序中实现这一点?SwiftUI在DragGesture((中是否具有此功能?或者只有UIKit有这个,请问代码是什么?
在swiftUI中这肯定是可能的,但我还不够熟悉,无法用语言表达,所以我会用UIKit回答,因为你暗示UIKit也是你可以接受的答案。
从概念上讲,这里有一种在UIKit 中实现的方法
在视图中添加手势识别器。你可以在这里看到如何做到这一点:
如何以编程方式在swift中发送pangesturehttps://developer.apple.com/documentation/uikit/uiview/1622496-addgesturerecognizer
在视图的右侧或左侧添加第二个视图。根据触摸的移动和位置为第二个视图制作移动动画。
你也可以有一个手势识别器来执行一个自定义的动画片段。每个方向都有一个自定义分段,左右动画导航到不同的视图控制器。
https://www.appcoda.com/custom-segue-animations/
在Swift中,您可以通过类似的代码来实现这一点:
// First declare and initialize each swipe gesture you want to create. I have added swipe left and right, to go back and forth between views.
let rightSwipe : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(sender:)))
rightSwipe.direction = .right
let leftSwipe : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(sender:)))
leftSwipe.direction = .left
接下来,你要在一个函数内处理每次滑动。
@objc func handleSwipe(sender: UISwipeGestureRecognizer) {
if sender.direction == .right { // user swiped right
// push view controller (push new view on the navigation stack)
self.navigationController?.pushViewController(viewController(), animated: true)
} else { // user swiped left
// pop view controller (go back one view on the navigation stack)
self.navigationController?.popViewController(animated: true)
}
}