我必须实现一个视图控制器(在iPhone上,仅限肖像,全屏视图),其中视图的上半部分必须具有水平的分页滚动行为,可能是无限的。
我已经用于类似的目的UIPageViewControllers
,以利用数据源和委托协议,这对于管理内存和其他东西非常有帮助(在内存中只保留3个视图控制器,提供委托来准确处理操作当转换完成时等等):所以我认为在这种情况下,这个组件也是最好的选择。
但这是我的问题。在我意识到的视图中,我必须让用户明白他可以向左和向右滑动以移动到另一个视图:页面控件不是一个好选择,因为滚动可能是无限的,所以我想让左右视图控制器的一小部分视图可见 这样的事情:
link to the image(抱歉,我的帖子中无法包含图片)
到目前为止,我还没弄清楚如何实现这一目标。在初始化期间的选项中,可以指定UIPageViewControllerOptionSpineLocationKey
来设置(来自文档)“页面之间的间距,以点为单位”:但这似乎仅适用于正值,因此空间增加,而忽略负值这可能会减少空间。
我希望可能有一个使用页面视图控制器的解决方案,因为同时我需要在转换完成时刷新屏幕下部的表视图,并且页面控制器的委托方法非常适合这个目标。 也许集合视图可以是一个替代解决方案,但它更复杂,我不知道如何获得像我描述的那样刷新表视图的行为。
如果需要,我可以附上一些代码和原型的截图
答案 0 :(得分:4)
好的,我知道这不可能,为什么会这样。
数据源方法在需要时加载当前视图控制器之前和之后的视图控制器。根据需要,使这些视图控制器的视图始终可见,将要求数据源在当前(或之前,取决于滚动方向)之后加载多个视图控制器,以便为pan操作做好准备(可能,在用户抬起手指结束动画之前,两个视图控制器“之后”或“之前”可以看到我想要的配置),这不是UIPageViewController
在iPhone上的意图,特别是在纵向模式下
实际上,在任何时候在水平滚动组件中可以看到实现多个视图的唯一方法是使用水平分页实现UIScrollview
并计算contentSize
和其他相应的尺寸。