动态 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 的高度约束?