【问题标题】:What are some smooth ways to slide(drag) not swipe but slide(drag) from one view controller to another?有哪些平滑的方法可以从一个视图控制器滑动(拖动)而不是滑动,而是滑动(拖动)到另一个视图控制器?
【发布时间】:2014-11-02 06:03:15
【问题描述】:

我之前发布了一个问题,想了解 Snapchat 如何实现他们的导航系统。如何将一个 viewController 拖到另一个 viewController 上非常流畅。我发布这个问题是为了看看是否有人对如何将一个视图控制器水平拖动到另一个视图控制器有任何指导?

您可以使用平移手势识别器来实现这一点吗?

提前致谢。

【问题讨论】:

  • 我不了解 Snapchat,但我认为您所追求的可能是 UIPageViewController。见docs如果你适当地配置它的代理,它会为你做手势识别。
  • 取决于您想要的外观。如果您希望它在拖动时滚动,您可以使用 pbasdf 所说的页面视图控制器。如果您希望传入的视图拖动并覆盖旧视图(保持原位),那么您需要制作自己的动画。它可以通过平移手势识别器进行控制。
  • 好的,酷酷的。添加一个容器 viewController 并添加三个子视图控制器将所有三个子视图控制器都放在启用分页的滚动视图中怎么样?我最关心的是内存,因为有了这个选项,似乎一切都在容器上。@rdelmar
  • 这与使用设置为 UIPageViewControllerTransitionStyleScroll 的页面视图控制器获得的结果相同。
  • 好的,非常感谢!我认为这是一个很好的起点!

标签: ios objective-c ios7 uiviewcontroller drag


【解决方案1】:

您可以使用水平 UICollectionView 并使其单元格与屏幕一样大。因此,当用户滑动另一个屏幕时,会显得非常流畅。 对于此方法,您需要将视图控制器中的每个视图实现为 UICollectionViewCell。然后重写一些 UICollectionViewDelegate 方法来处理应该在当前位置返回什么单元格。

PS:您还可以将 pagingEnabled 设置为 true,让 swift 完成所有关于在滑动结束时将视图放置在屏幕上的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多