【发布时间】:2018-11-19 08:16:54
【问题描述】:
我想垂直 UIStackView 的高度应该是其排列视图的总高度。但是,当我将所有排列视图的框架高度更改为 0 时,即使调用 view.layoutIfNeeded() 并且所有排列视图都消失了,UIStackView 的框架高度仍然具有非零值。我还尝试将 UIStackView 的 Clip to Bounds 设置为 true,但它仍然不起作用。这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
print("Before --- UIStackView.frame.height: \(stackView.frame.height)")
print("Before --- firstLabel.frame.height: \(firstLabel.frame.height)")
print("Before --- secondLabel.frame.height: \(secondLabel.frame.height)")
print("Before --- thirdLabel.frame.height: \(thirdLabel.frame.height)")
print("Before --- forthLabel.frame.height: \(forthLabel.frame.height)")
for view in stackView.arrangedSubviews {
view.frame = CGRect(x: view.frame.origin.x, y: view.frame.origin.y, width: view.frame.width, height: 0)
}
print("===================================")
print("After --- UIStackView.frame.height: \(stackView.frame.height)")
print("After --- firstLabel.frame.height: \(firstLabel.frame.height)")
print("After --- secondLabel.frame.height: \(secondLabel.frame.height)")
print("After --- thirdLabel.frame.height: \(thirdLabel.frame.height)")
print("After --- forthLabel.frame.height: \(forthLabel.frame.height)")
view.layoutIfNeeded()
}
这是日志:
Before --- UIStackView.frame.height: 82.0
Before --- firstLabel.frame.height: 20.5
Before --- secondLabel.frame.height: 20.5
Before --- thirdLabel.frame.height: 20.5
Before --- forthLabel.frame.height: 20.5
===================================
After --- UIStackView.frame.height: 82.0
After --- firstLabel.frame.height: 0.0
After --- secondLabel.frame.height: 0.0
After --- thirdLabel.frame.height: 0.0
After --- forthLabel.frame.height: 0.0
【问题讨论】: