iOS Push UIViewController 像 Snapchat 这样的滑动手势

Posted

技术标签:

【中文标题】iOS Push UIViewController 像 Snapchat 这样的滑动手势【英文标题】:iOS Push UIViewController on slide gesture like Snapchat 【发布时间】:2014-11-06 16:43:03 【问题描述】:

我有一个关于 ios 推送导航控制器的问题。我想在滑动手势上推动视图控制器。就像在 Snapchat 应用程序中一样:主视图捕获图像。如果您从左向右滑动,则 snapchat 消息视图会平滑地滑动(推送)到主窗口。如果从右向左滑动 > 联系人视图。如何创建这种导航?非常感谢!

【问题讨论】:

你研究过 NavigationViewControllers 吗?当使用 presentViewController 方法为新的 viewController 设置动画时,它们使用了类似的动画。 是第三方库吗? 不!您可以制作 UINavigationController 并使用其方法,而无需导入任何其他框架。 :) 哦! UINavigationController! :D。是的,我相信,我应该使用 UINavigationController。但是如何通过滑动手势在导航控制器之间导航? 对不起!好吧,要使用滑动导航,您首先需要将 swipeGestureRecognizer 添加到 UiNavigationController 上的视图中。我“相信”(我可能是错的),但是当您识别出向左/向右滑动时,您可以调用向左或向右的 navigationItem 方法并呈现您想要的 viewController。 【参考方案1】:

我相信 Snapchat 的做法是通过 UIViewController 包含。本质上,主视图控制器包含一个滚动视图(启用分页)和 3 个子视图控制器(快照、相机和联系人)。他们不使用导航控制器在您滑动时呈现和弹出视图控制器。

请参阅有关视图控制器遏制的文档:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html

【讨论】:

但是快照和联系人有导航栏和返回按钮。而且,实际上就像推送的 UIViewControllers... 后退按钮只是改变滚动视图的contentOffset。它们实际上不会将您移动到导航堆栈中的任何位置。 为什么它比创建基于滑动的导航控制器更好? 他们的应用程序的性质不适合导航控制器。当您离开朋友时,您还没有完成视图,因为您可以在其他时间回到它。你只是远离它。因此,流行音乐是不合适的。更不用说更改导航控制器以执行您的建议将非常非常困难。【参考方案2】:

查看 snapchat 应用程序,您可能不想在一个 UINavigationController 中完成所有这些操作。

这就是你需要的。

    UIViewController - 这将是您的主要视图。就 snapchat 应用程序而言,这是您可以拍照的地方。 UINavigationController - 好友列表 UINavigationController - 用于 snapchat(绿色窗口)

您需要设置两个 segue,都从您的主控制器引导。一旦你完成了 segues 设置,我建议你编写自己的转换。看看UIViewControllerContextTransitioningUIViewControllerTransitioningDelegateUIviewControllerAnimatedTransitioning

我在工作,但当我回到家时,我会一起举一个例子。但是,以上内容应该可以让您指出正确的方向。

【讨论】:

一开始我还以为有:SnapchatCameraViewController、SnapchatSnapsViewController、SnapchatContactsViewController。 SnapchatCameraViewController 滑动 > SnapchatContactsViewController

以上是关于iOS Push UIViewController 像 Snapchat 这样的滑动手势的主要内容,如果未能解决你的问题,请参考以下文章

iOS11 push控制器tabbar上移问题

IOS-Storyboard控制器切换之TabBar

iOS(视图控制器转场)

UI整理-----part7--模态视图 push&pop

IOS 页面跳转方法总结

UIViewController生命周期测试