2016-07-26 45 views
0

我有的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重繪。 –

回答

1

我已經找到一個可行的解決方案,更新的UILabel內容我打電話後:

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

更新單元格的限制。然後調整單元格高度:

tableView.beginUpdates() 
tableView.endUpdates() 

我會等待接受這個答案,看看是否有人會回答,雖然一個更優雅的解決方案。

1
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

其實這不是我想要繼續的方式,單元格高度會自動自動版式首先計算,應該也做了第二次,那種重繪。 –

相關問題