更改的UILabel文本长度不调整其大小正确地

问题描述:

我有的UILabel其中根据文本长度正确地调整大小其高度的的UITableViewCell。要做到这一点我已经正确设置自动版式的限制和规定更改的UILabel文本长度不调整其大小正确地

tableView.rowHeight = UITableViewAutomaticDimension 

我遇到的问题是当的UILabel的试验冲压一个UIButton后变长 - 阅读更多,在细胞本身。我以编程方式向UILabel添加文本,并期望单元格高度增长。我添加了:

self.layoutIfNeeded() 
    self.updateConstraints() 

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

我也强制重载委托UIViewController 中的单元格行,但它也无法正常工作。我在这里错过了什么基础?

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

+0

做一件事,绑定UILabel Height的IBOutlet,然后更新该constant.it将会工作 –

+0

[可能已经出现了改变动态高度UITableViewCell的高度]的副本(http://stackoverflow.com/questions/35142584 /改变最高度的-A-动态高度的UITableViewCell-后其-已经APPEA) – fishinear

+0

这是同样的问题,但答案没有什么,我问,我不想自己计算高度,也不估计高度。我想强制AutoLayout重绘。 –

我已经找到一个可行的解决方案,更新的UILabel内容我打电话后:

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

更新单元格的限制。然后调整单元格高度:

tableView.beginUpdates() 
tableView.endUpdates() 

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

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 
} 
+1

其实这不是我想要继续的方式,单元格高度会自动自动版式首先计算,应该也做了第二次,那种重绘。 –