【问题标题】:Slide a UIViewController onto another view将 UIViewController 滑动到另一个视图上
【发布时间】:2012-01-23 02:07:54
【问题描述】:

我的 iPhone 应用程序中当前显示了一个 UIViewController,并且当用户点击按钮时我显示了第二个 ViewController。

但是,我想更改它。我希望这样当用户滑动手指时,第二个视图控制器出现在右侧,就好像用户正在浏览本机照片应用程序中的照片一样。

我该怎么做?假设第二个 UIViewController 已经创建并分配,只是没有显示。我想我需要

1) Determine when the user is sliding their finger using some touchesBegan function
2) Somehow display only a portion of the second view controller as the user slides their finger across.

对其中任何一个有什么想法吗?我不知道该怎么做?

【问题讨论】:

    标签: iphone ios uiview uiviewcontroller


    【解决方案1】:

    您可能想要做的是使用UIScrollView 并将其pagesEnabled 属性设置为YES。这就是 Apple 的 Weather 应用程序的实现方式。

    然后,对于滚动视图的每一页,您将添加一个视图控制器的视图作为滚动视图的子视图(通过正确设置框架,这样它们就不会全部堆叠在一起!)。

    【讨论】:

    • +1 - 这是要走的路。请注意,如果您有大量 UIViewControllers,您可能需要聪明地在任何时候(当前、上一个、下一个)只在内存中保留一些。不过,这将开始变得非常复杂,因为您需要在后台线程上进行新的控制器实例化,以使您的 UI 更加流畅。最终你需要问问自己这是否值得额外的痛苦,或者你可以简单地使用带有滑动手势识别器的UINavigationControllersetViewControllers:animated: 来实现类似的效果。
    【解决方案2】:

    查看UIPageViewController。听起来这就是您正在寻找的课程。 (Docs here)

    【讨论】:

    • 这是否能让我在屏幕底部没有小蓝点的情况下实现我想要的,这就是@jbrennan 的解决方案?
    • @jbrennan 的解决方案不会创建“小蓝点”。蓝点是使用 UIPageControl 类创建的。 UIPageViewController 将是要走的路,除了唯一支持的转换是 PageCurl (ala iBooks) - 而不是问题中所需的滑动样式。为@jbrennan 的解决方案 +1,这与我在自己的应用程序中走的路线相同。
    • UIPageViewController 确实支持过渡的滑动样式。看看 Apple 的 PhotoScroller 示例代码。
    • 从 iOS6 开始,UIPageViewControl 还(可选)提供“小蓝点”。
    【解决方案3】:

    使用以下代码将 UIView 从底部滑动到顶部:

     myViewController *obj = [[myViewController alloc] init];
     [self presentModalViewController:obj animated:YES];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多