ios - 当排列的子视图的高度都为零时,UIStackView 高度不为 0
问题描述
我想垂直 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
解决方案
使用堆栈视图,您可以简单地隐藏子视图以调整其高度。
for view in stackView.arrangedSubviews {
view.isHidden = true
}
推荐阅读
- c# - C# - 实现安全 Web 套接字
- c++ - Qt 对象所有权内存泄漏
- web-services - 使用 Web 服务更新 Moodle 中的自定义文件?
- reactjs - 从 React js 中的第一个 API 调用加载所有内容(延迟加载)时进行第二个 API 调用
- c# - C# 中 JSON 到 ExpandoObject 的转换
- java - 程序中的异常读取文件以获取不同硬币的数量并打印出总数
- javascript - 显示“小时和分钟”适用于除 safari 之外的所有浏览器。JavaScript 日期
- apache-spark - Spark Memsql 连接器不起作用
- sql - 在 Neo4j、noSQL 中加入两个表
- python - 使用Python中的算法按类属性手动排序列表