我需要设置 UITableViewCell 动态高度,带有 UIImageView 的多个动态标签
Posted
技术标签:
【中文标题】我需要设置 UITableViewCell 动态高度,带有 UIImageView 的多个动态标签【英文标题】:I need to set UITableViewCell Dynamic Height, With Multiple dynamic label with UIImageView 【发布时间】:2017-08-30 06:46:35 【问题描述】:我需要根据内容设置UITableViewCell
动态高度。
这是我的演示图片:
在此标记具有动态内容的标签,因此基于该标签内容我的单元格高度应该改变..
我得到约束错误。在这个单元格中,有两个 UILabel 可用,并且都具有动态内容大小。 (我已经使用只有一个标签的自动调整单元格进行了演示。)但是在这个单元格中,有两个标签。所以错误是 xcode 建议我给标签 Y POS 或高度,但我已经设置了最高约束。 (标签线设置为 0 零的 4 侧约束)但它仍然失败。 我也尝试使用此代码
self.tableView.estimatedRowHeight = 250.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
这是我的demo code
【问题讨论】:
UITableViewCell with dynamic height ios的可能重复 将代码包含在问题本身中,而不是某些外部资源中。 youtube.com/watch?v=I4jSwWmqfOA查看本教程@NiravS 你的标签行数应该为零 【参考方案1】:看看我的输出截图。对于这两个标签,您应该给出所有四个约束,并且您必须将两个标签的高度优先级更改为 750 并将拥抱和阻力优先级设置为 1000。然后您必须将情节提要中的行数更改为 0
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
return UITableViewAutomaticDimension
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
return 250
【讨论】:
您必须将两个标签的高度优先级更改为 750,我没有得到这个 - 请澄清一下【参考方案2】:将此代码添加到viewDidLoad()
方法中:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44
【讨论】:
【参考方案3】:在 Swift 3 中,使用
func tableView(_ tableView: UITableView,estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
return HEIGHT // Maximum cell height
在表格视图单元格中,为文本视图设置动态高度约束(大于或等于)- 最大文本视图高度
【讨论】:
【参考方案4】:我发现了问题。将文本设置为UILabel
后,它仍然没有为其内容设置正确的高度框架。在cellForRowAt
中,添加以下内容:
//these make height frame both of labels became correct
cell.lbName.sizeToFit()
cell.lbAge.sizeToFit()
// update cell layout
cell.layoutIfNeeded()
【讨论】:
【参考方案5】:看看UITableViewDelegate
函数tableView(_:heightForRowAt:)
。如果您能够计算给定索引路径的高度,它将适用于您的情况。
【讨论】:
以上是关于我需要设置 UITableViewCell 动态高度,带有 UIImageView 的多个动态标签的主要内容,如果未能解决你的问题,请参考以下文章
1 UITableViewCell 中的 2 个动态图像查看器,如何设置约束?
UITableViewCell 内 UITableView 的动态行高
UITableViewCell 不使用 Swift 动态调整大小