【问题标题】:UIPageViewController: how to have "negative" spacing between view controllers (with scroll-transition style)UIPageViewController:如何在视图控制器之间设置“负”间距(使用滚动过渡样式)
【发布时间】:2014-03-02 17:09:10
【问题描述】:

我必须实现一个视图控制器(在 iPhone 上,仅纵向,全屏视图),其中视图的上部必须具有水平的分页滚动行为,可能是无限的。

我已经将 UIPageViewControllers 用于类似目的,以利用数据源和委托协议,它们对于管理内存和其他东西非常有帮助(在内存中只保留 3 个视图控制器,提供委托以准确地在过渡完成等等):所以我认为在这种情况下,这个组件也是最好的选择。

但是我的问题来了。在我正在实现的视图中,我必须让用户了解他可以左右滑动以移动到另一个视图:页面控件不是一个好的选择,因为滚动可能是无限的,所以我想让左右视图控制器的一小部分视图可见。
类似的东西:

link to the image(抱歉,我的帖子中还不能包含图片)

到目前为止,我还没有弄清楚如何实现这一点。在初始化期间的选项中,UIPageViewControllerOptionSpineLocationKey 可以指定设置(来自文档)“页面之间的空间,以点为单位”:但这似乎只适用于正值,因此空间增加,而它忽略可能的负值减少空间。

我希望可能有一个使用页面视图控制器的解决方案,因为同时我需要在转换完成时刷新屏幕下部的表格视图,页面控制器的委托方法非常适合这个目标。 也许集合视图可以是另一种解决方案,但它更复杂,我不确定如何获得像我描述的那样刷新表格视图的行为。

如果需要我可以附上一些代码和原型的截图

【问题讨论】:

    标签: ios objective-c horizontal-scrolling uipageviewcontroller spacing


    【解决方案1】:

    好的,我知道这是不可能的,为什么会这样。 数据源方法在需要时加载当前视图控制器之前和之后的视图控制器。如我所愿,使这些视图控制器的视图始终可见,将要求数据源在当前视图控制器之后(或之前,取决于滚动方向)加载多个视图控制器,以便为平移操作做好准备(可能,在用户抬起手指结束动画之前,两个视图控制器“之后”或“之前”可能会变得可见,这是我想要的配置),这不是 iPhone 上的UIPageViewController 想要的,尤其是在纵向模式下。

    所以实际上,实现在任何时候在水平滚动组件中可见多个视图的唯一方法是实现具有水平分页的UIScrollview 并相应地计算contentSize 和其他大小。

    【讨论】:

    • iOS 7 实现这一点的方法是使用UICollectionViewController 并启用paging 进行捕捉。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多