如何更新 UITableViewCell 约束的常量并更新单元格的高度



在iOS8和自动布局(纯自动布局,无heightForRowAtIndexPath:)下,我遇到了自调整单元格大小的问题。

我有两个UITableView子类。两者都包含某种类型的页眉(静态高度)、页脚(也是静态高度)和具有动态高度的"内容"。第一个中的动态内容是UILabel,行号设置为0,它就像一个符咒,在cellForRowAtIndexPath中同步设置(这很重要!)。CCD_ 5被设置为CCD_。

第二种是UIImageView。图像是异步下载的,属于AFNetworkingUIImage类别。在完成块中,我设置UIImageViewUIImage,并更新计算出的约束常数:

  • 这是一个高度限制
  • 它是一个出口
  • UIImageView的宽度固定,高度计算
  • 高度取决于图像的大小

现在,我已经尝试了:

  • UITableViewCell的子类中调用layoutIfNeeded根本不起作用
  • 设置delegete,调用-cellNeedsUpdate:(UITableViewCell *)cell,方法如下:
    • 在单元格的indexpath处重新加载行-这会导致奇怪的滚动行为
    • 调用layoutIfNeeded并在UITableView上开始/结束更新-这一次非常奇怪,出现了随机行,单元格的背景颜色发生了变化
  • 以上结果的不合理组合——奇怪的行为或根本不起作用

有没有什么方法可以在不出现滚动问题的情况下正确设置它?

在主线程上,调用:

[tableView beginUpdates];
[tableView endUpdates];

这将强制表视图重新计算所有可见单元格的高度。

最新更新