在UIStackView中以编程方式添加内容时的UIScrollView高度

时间:2017-05-12 14:32:24

标签: ios swift uiscrollview height uistackview

我正在尝试制作包含UIScrollView的视图。此UIScrollView包含3 UIViews。最后一个包含我想在运行时填充的另一个UIStackView

这是故事板的图片:

enter image description here

enter image description here

但是当我在第二个UIStackView中在运行时添加内容时,ScrollView的高度保持不变。

第二个UIStackView被定义为第一个:{/ p>

  • 轴:垂直
  • 对齐:填充
  • 分布:等间距

然后我用:

mStackView.addArrangedSubview(matProgress)

结果如下:

{{3}}

使用底部视图和ScrollView拉伸以适合内容的方式是什么。

2 个答案:

答案 0 :(得分:2)

布局可以完成自动布局和约束。

关键点是:

  • 在StackView
  • 上设置设置高度限制
  • 设置" Main" StackView DistributionEqual Spacing
  • 设置" Main" StackView前导,尾随,顶部和底部约束到其Superview(ScrollView)
  • 还需要在" Main"上设置宽度约束。 StackView控制水平contentSize

唯一的怪癖将在启动时。如果底部/内部StackView中没有任何内容,它仍然会存在"存在"在主StackView中占用空间。有一个解决方法,但它必须在代码中完成。

您可以在此处查看一个有效的示例:https://github.com/DonMag/StackyScrolly

答案 1 :(得分:0)

如果您有UIScrollView,则子视图采用自动布局。以编程方式设置scrollview的高度将拉伸内部视图以符合自动布局。

因此,您可以通过代码获取第三个视图的高度,并将UIScrollView高度设置为view1.height + view2.height + expectedThirdViewHeight。