根据其内容扩展表格视图单元格高度/

问题描述

我在单元格上有 2 个标签。如果标签显示一行文本,则该单元格看起来不错。但是,如果有更多文本并且标签上的行被包裹,则其上的标签/文本会超出单元格。附上图片

enter image description here

我当前的代码

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
}

这就是解决方案的外观。如何根据内容更新单元格的高度?

enter image description here

解决方法

  1. 将行数设置为零。 应用适当的约束。

  2. 第二种解决方案 将标签放在 stackView 中,两个标签的行数都为零。