如何在IOS7中实现UIViewControllers之间的前后转换导航?

Posted

技术标签:

【中文标题】如何在IOS7中实现UIViewControllers之间的前后转换导航?【英文标题】:How to implement navigation between UIViewControllers with forward and back transition in IOS7? 【发布时间】:2013-09-24 20:29:19 【问题描述】:

假设我有一个想要浏览的文章列表。对于 ios 6,有两个简单的解决方案:

    使用 UIPageViewController 使用带有 UIScrollView 的自定义解决方案,可能是嵌套的解决方案

这很简单,但在自定义过渡方面缺乏灵活性。使用 UIPageViewController 我只有两个(Page Curl 和 Scroll),使用 UIScrollView 只有 Scroll。

我要找的过渡效果是苹果在 iOS 7 中引入的效果。我们通过将新控制器推送到堆栈中得到的效果,看截图:

在我看来,这带来了非常好的用户体验,但它只适用于后退,而不是前进。但是由于 Safari 浏览器也支持双向导航,所以我想知道它是如何在那里实现的,以及最终如何在我的文章列表中实现它。

感谢任何提示!

【问题讨论】:

【参考方案1】:

我最近查看了完全相同的问题并构建了一个working demo,它使用UIViewController 包含和UIPanGestureRecognizer 的子类。它支持:

基于手势的双向分页(跟踪触摸而不是简单地在滑动时触发动画) 能够启用/禁用换行(从第 0 页移动到 lastIndex 并返回) 能够启用/禁用视差分页(禁用后,您将获得标准的UIScrollView 分页等功能

https://github.com/alfiehanssen/ios-viewcontroller-containment

另一种方法是基于新的UIViewControllerInteractiveTransitioning 和相关协议构建寻呼机。

希望这会有所帮助...

【讨论】:

你的演示看起来不错,干得好。然而,它还不如 Apple 提供的本机实现那么流畅,因此仍有一些工作要做(在将代码移植到 C# 之后;))。现在我决定直接使用 UIPageViewController,即使我必须不使用漂亮的转换:-/. 感谢 asp_net,我同意它的边缘有点粗糙,不过感谢您的鼓励言论。祝你好运!【参考方案2】:

在您自己的容器视图控制器中拥有一堆视图或视图控制器,并使用平移手势识别器来跟踪手指滑动,并将其转化为更改顶视图的框架/中心。

github 中有很多 iOS 幻灯片菜单项目,它们可能会向您展示如何进行平移手势识别器。

【讨论】:

以上是关于如何在IOS7中实现UIViewControllers之间的前后转换导航?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不导入第一个 UIViewController 类的情况下从 UINavigationController 中的另一个 UIViewController 手动释放 UIViewControlle

如何在Castle.Core中实现IProxyGenerationHook的类中实现Equals和GetHashCode的覆盖方法?

如何在android中实现svm模型?

如何在 laravel 中实现 vuetify?

如何在android中实现BottomAppBar?

如何在 Spring Boot 中实现刷新令牌