Swift:scrollview自动布局

时间:2017-03-07 12:22:25

标签: ios swift uiscrollview

我需要在scrollview中显示一些信息,它应该如下所示:

enter image description here

第一个视图定义了高度,但第二个视图具有动态高度。我知道如何让它变得动态,但我不知道如何在滚动视图中制作它。它试图这样做,但它不起作用。知道如何在scrollview中制作这个场景吗?

没有滚动视图:

enter image description here

内部。滚动视图:

enter image description here

3 个答案:

答案 0 :(得分:2)

如果您的视图仅垂直滚动,则应使用UITableView而不是UIScollView

表格中的每个不同视图都是UITableViewCell。对于内容的每个单元格集自动布局约束,确保您的约束附加到单元格内容视图的顶部和底部。为了使其更容易,请考虑在单元格内使用UIStackView

然后在你的表视图控制器......

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = <estimate of height>

......你的细胞将自己调整大小。

有很多资源用于自动调整表格视图单元格...

答案 1 :(得分:0)

如果没有更多详细信息,很难给出确定的答案......根据您提供的信息,我提供以下通用解决方案:

假设您使用StroyBoard / Xib设计视图 - 然后您可以按如下方式设置视图:

-View (root view)

   -ScrollView

      -UIStackView (vertical stackview)

         -UIView (set static height and add all other components)

         -UILabel (dynamic label ie with No. of lines set to 0)

         -UIView (another view with static height set)

...后   - 使用autlayout将UIScrollView的top,leading,trailing,bottom约束设置为根视图...   - 使用autolayout将UIStackView的顶部,前导,尾部,底部约束设置为滚动视图的顶部,前导,尾部和底部约束...   - 使用autolayout设置UIStackView的宽度 - 你可以使它等于根视图的宽度,但你也可以给它任何你想要的宽度   - 使用autolayout EITHER将UIStackView置于Y轴(垂直)中心,或将其顶部约束设置为根UIView的顶部约束,因为它需要知道其Y位置...

有了这个,当你的内容大小大于屏幕大小时,你应该让你的滚动视图开始

如果这不是您想要的,那么您必须提供更多信息或澄清。

答案 2 :(得分:0)

该视图中的第二个视图或标签不应具有高度约束。

对于该标签,set number of lines to '0'并且不要给它一个高度。但如果它发出第二个视图需要高度约束的警告,则给它一个低优先级的高度约束。