我需要设置 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 动态调整大小

使用锚以编程方式设置 UITableViewCell 的布局

UITableViewCell 动态约束

UITableViewCell,使用多个标签设置动态高度