使用平移手势识别器关闭视图控制器

时间:2017-02-10 01:28:25

标签: ios swift uipangesturerecognizer

我希望能够在我的主视图控制器上向下滑动,并让我的第二个视图控制器从上面打开。我希望这种转换是交互式的,因为你可以在VC之间来回转换而不必完成整个转换(跟随用户的手指就像带有分页的滚动视图那样)。

当在新的Snapchat更新上在View Controllers之间滑动时,可以看到这种效果。当您第一次打开应用程序时,您在相机屏幕上。如果向任何方向(向上,向下,向左或向右)滑动,相应的视图会进入并覆盖相机屏幕。当您在视图之间滑动时,它们基本上都覆盖了主视图(不像我在网上找到的使用scrollview实现此效果的许多教程中那样移动它)。

基本上它看起来像一个垂直的页面视图控制器,但不是当新的进入时将当前视图控制器移出屏幕,新的一个将覆盖当前视图控制器,直到它完全位于它之上。

根据我的理解,平移手势识别器可以做到这一点。 有谁知道我怎么能这样做。我一直在寻找,似乎无法弄明白。

1 个答案:

答案 0 :(得分:2)

  

我希望能够在我的主视图控制器上向下滑动,并让我的第二个视图控制器从上面打开。我希望这种转变是互动的

好的,所以你要描述一个自定义的交互式过渡动画。有关如何实现此操作的具体细节取决于您是希望将其作为推送转换还是现有(模态)转换。我认为这是一个演示(模态)过渡。

因此,您将首先设置显示的视图控制器transitioningDelegate。一切从那里起飞。平移手势识别器将调用present, 并将调用转换委托的委托方法:

  • animationController(forPresented:presenting:source:)
  • interactionControllerForPresentation(using:)

从第二种方法返回的交互控制器负责通过更新动画的“框架”(以及转换协调器)来响应平移手势中的每个更改。

如果仅适用于iOS 10,这非常简单,因为您可以使用UIViewPropertyAnimator。当手势结束并且您决定完成或取消动画时,它具有显着的“快速”到动画结束或开始的能力。否则,您最好使用UIPercentDrivenInteractiveTransition对象来帮助您。