回答UITableView的UITableViewCell的动态高度有很多问题。但是我无法解决我的问题。
我有这个表格创建代码:
class UINoteTabelViewCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = .none
}
func fill(_ note: Note) {
let view = UINote(withNote: note, atPoint: .zero)
self.contentView.addSubview(view)
}
}
这是我为表格视图创建单元格的方式:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "NotePreview", for: indexPath as IndexPath) as! UINoteTabelViewCell
cell.fill(notes[indexPath.row] as! Note)
return cell
}
表格视图estimatedRowHeight
和rowHeight
也设置为UITableViewAutomaticDimension
但是表格视图仍然以44.0行高度绘制。
我不知道如何解决它。
PS我无法设置固定estimatedRowHeight
,因为每个单元格都有动态高度
答案 0 :(得分:0)
我可以看到你只是在cell contentView上添加了NoteView。您还应该在注释视图上应用自动布局约束,如前导,尾随,顶部和底部。 如果您在笔记视图上应用了正确的自动布局约束,希望它能够正常工作。
答案 1 :(得分:0)
你应该给 estimatedRowHeight 一些默认值,比如说60。 然后行的默认高度为60,但是当内容需要高度超过60时, UITableViewAutomaticDimension 将起作用。
答案 2 :(得分:0)
自动高度适用于计算单元格的contentView
高度。因此,您必须添加将用于计算其实际高度的约束。
试试这个:
class UINoteTabelViewCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = .none
}
func fill(_ note: Note) {
let view = UINote(withNote: note, atPoint: .zero)
self.contentView.addSubview(view)
// this will make the difference to calculate it based on view's size:
view.translatesAutoresizingMaskIntoConstraints = false
view.leftAnchor.constraint(equalTo: contentView.leftAnchor).isActive = true
view.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true
view.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
}
}
此外,estimatedRowHeight
应设置为大致估算所有单元格大小的特定值。但那不是问题。