处理平移手势的最佳方式

时间:2014-02-08 12:24:06

标签: ios objective-c

我想使用平移手势处理同一视图控制器类的两个实例之间的转换。

我读过几乎每个过渡都可以通过segues处理,但是在使用平移手势时它是否相同?

Segues似乎不适合这种过渡。

目前,我有一个主视图控制器,它实例化到子视图控制器。手势相关代码驻留在主视图控制器中。

效果很好,但我相信必须有一个解决方案,所有控制器管理工作都在故事板中完成。

我的代码中处理这种转换的最佳位置是什么?

2 个答案:

答案 0 :(得分:1)

听起来像你想要的是UIPageViewController设置为滚动而不是页面卷曲(这是一个可设置的属性)页面视图控制器将为你完成所有的工作。

Xcode文档中有一个名为PhotoScroller的示例应用程序,它展示了如何设置它。它还有许多其他的东西,(捏缩放和图像平铺),但你可以忽略它。

如果您无法获得UIPageViewController来为您提供所需的转换,那么您可能需要构建自己的自定义父视图控制器类。使用容器VC和嵌入segue嵌入单个子项是微不足道的。我还没有尝试在同一个容器中嵌入多个孩子。使用嵌入segues。我已经使用在iOS 5中添加的“手动”父/子VC调用在子VC之间进行了转换

答案 1 :(得分:0)

我发现了一篇关于使用iOS 7实现自定义转换的方法的非常好的文章,无论它们是否具有交互性:http://www.captechconsulting.com/blog/tyler-tillage/ios-7-tutorial-series-custom-navigation-transitions-more

附带一个非常详细的演示。

动画应该是实现UIViewControllerAnimatedTransitioning或UIViewControllerInteractiveTransitioning协议的类。

使用手势识别器的代码可以驻留在这些类中。

然后可以使用导航控制器委托的以下方法返回动画:

  • navigationController:animationControllerForOperation:fromViewController:toViewController:
  • navigationController:interactionControllerForAnimationController:

这样我就可以将动画插入到我想要的任何控制器中。

我希望它可以帮助别人。