我在表格视图单元格中有一个标签。我已将标签设置为多行2。但是,如果文本较大,它将占用空间,就好像它没有行限制并显示全文一样。即使只显示两行。
该显示标签的约束在下面。所有其他元素都是从容器顶部到底部之间的5个点。如果文本为2行或更少,则没有多余的空间。有没有人经历过或找到了解决方法?
答案 0 :(得分:1)
如果您不希望标签增长得超出预期。
label.setContentCompressionResistancePriority(.required, for: .vertical)
如果使用笔尖/故事板。只需将content hugging priority
更改为1000
答案 1 :(得分:1)
假设其他三个标签具有numberOfLines
1。
这是可行的解决方案
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib..
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.estimatedRowHeight = 112
self.tableView.rowHeight = UITableView.automaticDimension
}
日期标签
约束和内容拥抱优先级
第二个标签
约束和内容拥抱优先级
标签东西
约束和内容拥抱优先级
标签最后一个(上午12:00)
约束和内容拥抱优先级
结果:
有关详细信息,请参阅此链接 Demo Project
希望它会对您有所帮助。
答案 2 :(得分:0)
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
答案 3 :(得分:0)
由于存在约束,您需要告诉UILabel您将处理UILabel上的多行内容。另外,当发生这种情况时,您可能需要重新调整表格视图单元格/行的大小,以便它们可以适应。
确保tableview将适应。
override func viewWillAppear(_ animated: Bool) {
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 65.0
}
解决UILabel问题
let subTitleLabel: UILabel = {
let label = UILabel()
label.text = "My String"
label.font = UIFont.systemFont(ofSize: 22).bold()
label.textColor = UIColor(red: 0.773, green: 0.776, blue: 0.773, alpha: 1.0)
label.numberOfLines = 0 // <---- change number of lines
label.fitTextToBounds()
label.translatesAutoresizingMaskIntoConstraints = false // <--- only if using constrains
label.textAlignment = .left
return label
答案 4 :(得分:0)
对于我来说,我使用此功能,如果屏幕较小,它将自动缩小到您设置的最小尺寸。 希望这可以帮助。
答案 5 :(得分:0)
Why don't you just provide static height to UILabel if you don't want it to be any longer than 2 lines, give it an approx height of 40-50