添加子视图后如何更新堆栈视图的大小(以编程方式)?
How to update the size of stackView after adding subviews (programatically)?
let innerView = UIView(frame: .init(x: 0, y: 0, width: 50, height: 50))
let outerSV = UIStackView(arrangedSubviews: [innerView])
outerSV.frame.width // still 0! should be 50
outerSV.frame.height // still 0! should be 50
那么问题来了:添加子视图后如何更新stackView的大小?
您应该在 stackView 的子视图上调用 sizeToFit()
和 layoutIfNeeded()
。像往常一样约束 UIStackView,并像往常一样约束子视图。
此外,您需要将其设置为按比例填充,它会调整大小以适应新内容。
并确保您在堆栈视图上没有高度约束的底部约束。您应该只需要左、右和上约束。
let innerView = UIView(frame: .init(x: 0, y: 0, width: 50, height: 50))
let outerSV = UIStackView(arrangedSubviews: [innerView])
outerSV.frame.width // still 0! should be 50
outerSV.frame.height // still 0! should be 50
那么问题来了:添加子视图后如何更新stackView的大小?
您应该在 stackView 的子视图上调用 sizeToFit()
和 layoutIfNeeded()
。像往常一样约束 UIStackView,并像往常一样约束子视图。
此外,您需要将其设置为按比例填充,它会调整大小以适应新内容。
并确保您在堆栈视图上没有高度约束的底部约束。您应该只需要左、右和上约束。