滑动 UIViewController 以弹出 - 就像在 Readability 应用程序中一样

Posted

技术标签:

【中文标题】滑动 UIViewController 以弹出 - 就像在 Readability 应用程序中一样【英文标题】:Sliding a UIViewController to pop - as in the Readability app 【发布时间】:2012-07-09 12:43:21 【问题描述】:

我正在尝试模拟在 Readability 应用中看到的滑动 UIViewController。您可以将页面向右拖动,它将当前视图从堆栈中弹出以返回父 UIViewController,并带有如图所示的滑动动画:最右侧的视图位于顶部,并且被向右拖动,显示左边的原始表格。

我已经尝试了一些slidingUIViewController 解决方案,例如ECSlidingViewController,但他们尝试模拟Facebook/Path 的行为,即在另一个slidingUIViewController 上部分滑动,这不是Readability 所做的。

我也尝试过标准的水平滚动 UIScrollView,但滚动就像页面在侧面连接,而不是在另一个视图上滑动一个视图。

有人知道他们是怎么做到的吗?

【问题讨论】:

这不是 UIPageViewController 的设计目的吗?它会开箱即用。 【参考方案1】:

这可以通过几个步骤轻松完成。我不会写下你需要编写的所有代码,而只是写下你需要采取的步骤。我将使用主-详细信息术语,其中主视图是您要从中显示详细信息视图的视图,而详细信息视图当然是导航堆栈顶部的视图。

当你想展示详细视图时:

1) 创建一个 UIViewController 的实例来处理与 detailView 的交互。在 ios 5+ 上,您可以将此实例存储在 master 的 viewController 上的 childrenViewControllers @property 中。如果您支持较低的操作系统,则应将实例存储在 ivar 中。

2) 将 detailView 的框架设置在屏幕边界之外;添加到 detailView 用于图形目的的阴影。最后添加detailView作为masterView的子视图。

3)(可选)向 detailView 添加平移手势识别器,以允许用户向后滑动视图并关闭它。

4) 在屏幕边界内为 detailView 设置动画。确保禁用与下面视图的交互(注意不要同时禁用与 detailsView 的交互!)

当您想要关闭详细视图时:

1) 在屏幕边界之外为 detailView 设置动画。

2) 从它的 superview 中删除它并删除对它的 viewController 的引用。

3) 重新启用用户与主视图的交互。

【讨论】:

以上是关于滑动 UIViewController 以弹出 - 就像在 Readability 应用程序中一样的主要内容,如果未能解决你的问题,请参考以下文章

检查弹出的 UIViewController 是不是被滑动关闭

防止在外部单击时以弹出模式关闭单元格编辑器

如何覆盖 Apple Watch 后退按钮以弹出到根控制器

Delphi XE4或XE5:如何以弹出格式打开Goog le Chrome?

当我点击图片时,此图片会以弹出窗口的形式打开,但我想向我展示另一张不同图片的图片

如何在不使用导航控制器的情况下推送 UIViewController?