我需要使用UIImageView

时间:2017-08-30 06:46:36

标签: ios swift uitableview uilabel

我需要根据内容设置UITableViewCell动态高度。

这是我的演示图片:

enter image description here

在这个带有动​​态内容的标签中,基于该标签内容我的单元格高度应该改变..

我得到了约束错误。在这个单元格中,有两个UILabel可用,并且都具有动态内容大小。 (我已经使用只有一个标签的自动调整大小的单元格进行了演示。)但是在这个单元格中有两个标签。所以错误是xcode建议我给Y POS或Height标签,但我已经设置了顶级约束。 (标签线设置为0的4个侧面约束)但是它仍然失败。 我也尝试使用此代码

self.tableView.estimatedRowHeight = 250.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;

这是我的demo code

5 个答案:

答案 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

    }

enter image description here

答案 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:)。如果您能够计算给定索引路径的高度,它将适用于您的情况。