IOS:使整个视图可滚动,而不仅仅是子视图

时间:2015-08-04 12:40:25

标签: ios swift uiview uiviewcontroller uiscrollview

我有一个viewController,其中我有一个scrollView,其中我有3个视图。这是一个方案:

  • ScrollView(UIScrollView)
    • Header(UIView)
    • TabBar(UIView)
    • Container(我加载ViewController的UIView)

主要的问题是,在我的容器(其中有一个视图控制器)中,我有一个collectionView(可以滚动)但我希望我的整个scrollView滚动(不仅是我的容器)。

所以这就是我所拥有的:

Only the Container is scrolling

这就是我想要的: I want the entire scrollView to scroll

任何人都可以帮我这个吗?

4 个答案:

答案 0 :(得分:1)

我刚刚为自己的项目解决了这个问题。假设您正在使用故事板,我使UIView成为UITableView的子项,并使UITableView扩展了设备的完整视口。

由于UITableView实现了UIScrollView,因此您可以全屏滚动内容。

常规规则您的父视图必须实现UIScrollView并扩展全屏以获取视口垂直滚动。

documentation

答案 1 :(得分:0)

要执行此操作,如果未使用自动布局或者以编程方式向容器添加视图,则必须在加载某些数据后手动设置集合视图框以匹配其内容大小。如果您使用自动布局,则应在创建高度约束出口并根据集合视图内容大小设置其常量值,再次在其上加载数据后

答案 2 :(得分:0)

您应该设置容器视图的框架以匹配其中加载的视图控制器的高度,并根据容器高度设置scroolview的内容大小。

答案 3 :(得分:0)

仅当滚动视图的内容大于其框架时,滚动视图才会滚动。这适用于父滚动视图以及子滚动视图。 在您的情况下,对于父滚动视图,滚动其内容(标题,标签栏和容器)必须具有比其父级更高的高度。子scrollview(容器)已经滚动,因为它的内容(视图控制器)的高度高于其父级。

我已将两个滚动视图都滚动:

(1)父卷轴视图 - 通过增加子滚动视图的高度,使其在主视图控制器的框架下方延伸。子scrollview是主scrollview的内容之一。

(2)子滚动视图 - 在其中设置大内容,使其大于其父级。我使用了很长的UIImage作为其内容。

另外,我使用了autolayout并将内容固定到了滚动视图中。通过添加约束来支持。

希望这有帮助。

这是滚动的方式:Scrolling of UIScrollView inside another