动态 UITableView 单元格高度的问题

Posted

技术标签:

【中文标题】动态 UITableView 单元格高度的问题【英文标题】:Problem with dynamic UITableView cell heights 【发布时间】:2021-03-19 16:39:29 【问题描述】:

我希望我的单元格具有动态高度。我使用下面的代码:

let tableView: UITableView = 
        let view = UITableView()
        view.register(MyTableViewCell.self, forCellReuseIdentifier: MyTableViewCell.reuseIdentifier)
        view.rowHeight = UITableView.automaticDimension
        view.estimatedRowHeight = 150
        view.separatorStyle = .singleLine
        view.isScrollEnabled = true
        return view
    ()

单元格只包含一个给定一个约束的标签——在单元格内居中:

private func setupView() 
        addSubview(titleLabel)
        titleLabel.snp.makeConstraints  maker in
            maker.center.equalToSuperview()
        
    

标签的定义:

let titleLabel: UILabel = 
        let label = UILabel()
        label.textColor = .black
        label.textAlignment = .center
        label.numberOfLines = 0
        return label
    ()

然后在 cellForRowAt 方法中分配标签的文本,但在每种情况下都会返回相同的高度,即使文本有时是 4 行并且单元格的高度应该被拉伸。 我在上面的代码中缺少什么?谢谢

【问题讨论】:

【参考方案1】:

单元格的内容需要设置自动布局约束,以便从单元格的顶部到底部存在约束连接,以便自动尺寸工作。

private func setupView() 
    addSubview(titleLabel)
    titleLabel.snp.makeConstraints  maker in
        maker.edges.equalToSuperview()

        //or add .top, .left, .right, .bottom constraints individually, 
        //if you need to add .offset() to each of the sides
    

【讨论】:

【参考方案2】:

你应该给标签 top 、 bottom 、前导和尾随约束以使高度动态

【讨论】:

以上是关于动态 UITableView 单元格高度的问题的主要内容,如果未能解决你的问题,请参考以下文章

UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview

如何根据动态高度单元格设置 UITableView 的高度约束?

UITableView:单击按钮时如何动态更改单元格高度?

UITableView 单元格的动态高度问题(Swift)

UITableView:如何知道 TableView 的所有具有动态单元格高度的单元格何时被调整大小?

具有动态单元格高度的 UITableView 的 reloadData() 导致跳跃滚动