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 设置,我建议你编写自己的转换。看看UIViewControllerContextTransitioning
、UIViewControllerTransitioningDelegate
、UIviewControllerAnimatedTransitioning
。
我在工作,但当我回到家时,我会一起举一个例子。但是,以上内容应该可以让您指出正确的方向。
【讨论】:
一开始我还以为有:SnapchatCameraViewController、SnapchatSnapsViewController、SnapchatContactsViewController。 SnapchatCameraViewController 滑动 > SnapchatContactsViewController以上是关于iOS Push UIViewController 像 Snapchat 这样的滑动手势的主要内容,如果未能解决你的问题,请参考以下文章