UIStackView内部的UIView动态高度

时间:2018-08-20 18:57:52

标签: ios swift uiview uistackview

我目前有一个堆栈视图设置,其中包含许多不同的对象,我正在尝试向其中添加视图。

该视图将在运行时以编程方式在其中添加动态数量的标签。

将视图放入堆栈视图时,会遇到约束错误,这些错误可以通过添加高度约束来解决。

但是,我最初不知道视图的高度,所以我不能限制它。

有什么方法可以根据其内容大小在StackView中自动调整UIView的大小吗?我以为这是自动的,但是当我不设置高度限制时,视图不会显示

2 个答案:

答案 0 :(得分:0)

您不必将内容视图放入stackview内即可向其中添加元素,您只需将具有(前导,尾随,top)约束的stackview钩到superView即可

然后使用添加元素

stack.addArrangedSubview(view)

最重要的是,您添加的元素必须具有内在的内容大小,例如label和button,否则,请添加高度

someView.heightAnchor.constraint(equalToConstant:<#setValue#>).isActive = true

分布设置为“填充”

答案 1 :(得分:0)

在UIStackView中添加具有动态高度的自定义UIView的步骤

  1. 将UIStackView添加到IB中的超级视图,并添加顶部,底部,前导和尾随约束。
  2. 如果IB为约束抛出任何错误,只需将UIStackView的固有大小设置为PlaceHolder并带有一些虚拟大小。这将修复UIStackView在IB中的位置,但会在运行时根据自动布局自动更改。
  3. 按如下所示创建CustomUIView实例

    Bundle.main.loadNibNamed(nibName, owner: self, options: nil).first as! CustomUIView

  4. 如下所示将UIView添加到UIStackView。

    stackView.addArrangedSubview(customView)

  5. 这会将自定义UIView添加到UIStackView,并将根据xib内容和约束进行扩展/折叠。只需确保您的xib具有符合自动布局准则的适当约束即可。