如何在swiftUI中添加拖动手势以更改视图?有点像Snapchat,向右滑动可以看到故事



因此,在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)
}
}

相关内容

  • 没有找到相关文章

最新更新