繁体   English   中英

UIStackView内部的UIView动态高度

[英]UIView dynamic height inside UIStackView

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

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

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

但是,我最初不知道视图的高度,因此无法对此进行限制。

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

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

然后添加元素

stack.addArrangedSubview(view)

最重要的是,您添加的元素必须具有固有的content-size,如label和button,如果没有,则添加一个高度

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

分配设置为填充

在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按照自动布局指南正确约束即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM