微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我在单元格上有 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 中,两个标签的行数都为零。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。