Я полагаю, высота вертикального UIStackView должна быть общей высотой его упорядоченных видов.Однако, когда я изменяю высоту кадра всех упорядоченных видов на 0, высота кадра UIStackView по-прежнему имеет ненулевое значение, даже если вызывается view.layoutIfNeeded()
, и все упорядоченные виды исчезают.Я также попытался установить значение Clip to Bounds
UIStackView в 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