1

我有一个带有 UILabel 的 UITableViewCell ,它可以根据文本长度正确调整其高度。为此,我已正确设置 AutoLayout 约束并指定

tableView.rowHeight = UITableViewAutomaticDimension

我遇到的问题是当按下 UIButton 后 UILabel 的测试变长时 - 阅读更多,在单元格本身中。我以编程方式将文本添加到 UILabel 并且我希望单元格高度会增加。我已经添加了:

    self.layoutIfNeeded()
    self.updateConstraints()

在单元格中,但它不起作用。细胞保持相同的高度。

我还强制重新加载委托 UIViewController 中的单元格行,但它也不起作用。我在这里缺少一些基本的东西吗?

编辑:这个问题与其他类似问题不同,因为我希望得到避免手动计算高度的答案。由于 AutoLayout 在第一次加载时完全能够计算正确的动态高度,我想应该有一种方法可以在标签中的文本变长时重新绘制单元格,而无需执行手动计算来估计行高。

4

2 回答 2

2
Get the Label height dynamically and set the tableviewcell height

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
   // Calculate the Label height and add it to default height of the cell
}
于 2016-07-26T10:59:44.187 回答
1

在更新我正在调用的 UILabel 内容后,我找到了一个可行的解决方案:

 UIView.animateWithDuration(0.3) {
     cell.contentView.layoutIfNeeded()
 }

更新单元格约束。然后调整单元格高度:

 tableView.beginUpdates()
 tableView.endUpdates()

我会等待接受这个答案,看看其他人是否会回答更优雅的解决方案。

于 2016-07-26T13:47:05.450 回答