Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在UIStackView中以编程方式添加内容时的UIScrollView高度_Ios_Swift_Uiscrollview_Height_Uistackview - Fatal编程技术网

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

Ios 在UIStackView中以编程方式添加内容时的UIScrollView高度,ios,swift,uiscrollview,height,uistackview,Ios,Swift,Uiscrollview,Height,Uistackview,我正在尝试创建一个包含UIScrollView的视图。此UIScrollView包含3个UIView。最后一个包含我想在运行时填充的另一个UIStackView 下面是故事板的图像: 但是当我在运行时在第二个UIStackView中添加内容时,ScrollView的高度保持不变 第二个视图被定义为第一个视图,具有: 轴:垂直 对齐:填充 分布:等间距 然后我使用: mStackView.addArrangedSubview(matProgress) 结果如下: 如何使底部视图和滚动视

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

下面是故事板的图像:

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

第二个视图被定义为第一个视图,具有:

  • 轴:垂直
  • 对齐:填充
  • 分布:等间距
然后我使用:

mStackView.addArrangedSubview(matProgress)
结果如下:


如何使底部视图和滚动视图拉伸以适合内容。

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

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

可以使用自动布局和约束完成布局

重点是:

  • 不要在任一StackView上设置高度限制
  • 将“主”堆栈视图
    分布设置为
    等间距
  • 将“主”StackView的前导、尾随、顶部和底部约束设置为其Superview(即ScrollView)
  • 您还需要在“主”堆栈视图上设置宽度约束,以控制水平内容大小
唯一的怪癖是启动时。如果在底部/内部堆栈视图中没有内容,它仍将在主堆栈视图中“存在”,并占用空间。有一个技巧可以绕过它,但它必须在代码中完成


您可以在这里看到一个工作示例:

您最初是否使用空的底部视图来显示它?或者当它第一次显示时,它有一些多行?当它第一次显示时,它已经有一些视图。我的问题在我接受的回答中的评论中有描述。谢谢DonMag,你提供的例子帮助我使它工作。当我像你一样使用
UILabels
时,我的项目与你的项目完全一样工作。所以问题是我在底部添加的视图没有任何高度约束。。。