我需要根据内容设置UITableViewCell
动态高度。
这是我的演示图片:
在这个带有动态内容的标签中,基于该标签内容我的单元格高度应该改变..
我得到了约束错误。在这个单元格中,有两个UILabel可用,并且都具有动态内容大小。 (我已经使用只有一个标签的自动调整大小的单元格进行了演示。)但是在这个单元格中有两个标签。所以错误是xcode建议我给Y POS或Height标签,但我已经设置了顶级约束。 (标签线设置为0的4个侧面约束)但是它仍然失败。 我也尝试使用此代码
self.tableView.estimatedRowHeight = 250.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
这是我的demo code
答案 0 :(得分:5)
查看输出的屏幕截图。对于这两个标签,您应该给出所有四个约束,并且您必须将标签优先级的高度更改为750&将拥抱和阻力优先级设置为1000.然后,您必须在故事板中将行数更改为0
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return 250
}
答案 1 :(得分:0)
将此代码添加到viewDidLoad()
方法:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
答案 2 :(得分:0)
在Swift 3中,使用
func tableView(_ tableView: UITableView,estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return HEIGHT // Maximum cell height
}
在表格视图单元格中,将动态高度约束设置为文本视图(大于或等于) - 最大文本视图高度
答案 3 :(得分:0)
我发现了问题。将文本设置为UILabel
之后,它仍然没有为其内容设置正确的高度框架。在cellForRowAt
中,只需添加以下内容:
//these make height frame both of labels became correct
cell.lbName.sizeToFit()
cell.lbAge.sizeToFit()
// update cell layout
cell.layoutIfNeeded()
答案 4 :(得分:-1)
查看UITableViewDelegate
函数tableView(_:heightForRowAt:)
。如果您能够计算给定索引路径的高度,它将适用于您的情况。