问题描述
我在单元格上有 2 个标签。如果标签仅显示一行文本,则该单元格看起来不错。但是,如果有更多文本并且标签上的行被包裹,则其上的标签/文本会超出单元格。附上图片。
我当前的代码:
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat {
return 68.0
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Code to dequeue reusable cell.
self.titleLabel.text = "This is a very very long text for the title label. Testing testing"
self.subTitleLabel.text = "This is a very very long text for the sub title label. Testing testing the wrapping"
self.titleLabel.sizetoFit()
self.titleLabel.layoutIfNeeded()
self.subTitleLabel.sizetoFit()
self.subTitleLabel.layoutIfNeeded()
}
我尝试修复的解决方案:
func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Code to dequeue reusable cell.
self.titleLabel.text = "This is a very very long text for the title label. Testing testing"
self.subTitleLabel.text = "This is a very very long text for the sub title label. Testing testing the wrapping"
self.titleLabel.sizetoFit()
self.titleLabel.layoutIfNeeded()
self.subTitleLabel.sizetoFit()
self.subTitleLabel.layoutIfNeeded()
}
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.estimatedRowHeight = 500
self.tableView.rowHeight = UITableView.automaticDimension
}
解决方法
-
将行数设置为零。 应用适当的约束。
-
第二种解决方案 将标签放在 stackView 中,两个标签的行数都为零。