iOS/Swift:当其中一项变大时动态调整 UIStackView 的大小

问题描述 投票:0回答:5

我有两个垂直的项目

UIStackView
:一个
UILabel
和一个
UITableView
。当运行时将动态数量的
UITableViewCell
添加到
UITableView
时,
UIStackView
不会变大。

有没有通用的方法来增加

UIStackView
的大小?

ios swift uistackview
5个回答
29
投票

您应该在 stackView 的子视图上调用

sizeToFit()
layoutIfNeeded()
。像平常一样约束 UIStackView,并像平常一样约束子视图。

此外,您需要将其设置为“按比例填充”,它将调整大小以适应新内容。


16
投票

确保 stackview 上没有高度约束的底部约束。你应该只需要左、右和顶部约束。


12
投票

我在 iOS 12 上有这个,而在 iOS 13 上运行得很好。 只需设置:

stackView.distribution = .fillProportionally

修好了:)


5
投票

您需要按比例填写,它将根据您的代码工作


0
投票

这个问题有点老了,但它可能对其他人有帮助。
我花了很长时间才找到正确的方法。
如果您有一个放置子视图的垂直堆栈视图,请创建前面提到的垂直堆栈视图的出口,并在

viewDidLoad()
(在我的例子中是弹出视图控制器)中执行以下操作:

self.view.layoutIfNeeded()
self.preferredContentSize.height = verticalStackView.sizeThatFits(CGSizeZero).height

与@Siriss所说的不同,

sizeToFit()
在我的情况下没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.