-1

堆棧溢出問題已經有這麼多的答案,請知道我看過,但所有的解決方案都不適合我。我在單元格中有兩個UILabels,一個有確定的寬度和高度,另一個是動態的,我把寬度大約爲< = 250,高度> = 50。我還設置所有四個邊距內容視圖,然後我嘗試以下兩種方法來獲取字符串的高度:如何使用UILabel的高度正確地增加UITableViewCell

var context: NSStringDrawingContext = NSStringDrawingContext() 
     context.minimumScaleFactor = 0.8 
     cell?.body.text = msg.body 
     var width: CGFloat = (cell?.body.frame.size.width)! 
     width = ((UIScreen.main.bounds.width)/320)*width 
     let size: CGSize = (cell?.body.text!.boundingRect(with: CGSize(width: width, height: 2000), options:NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSFontAttributeName: cell?.body.font], context: context).size)! 
     print("size.height is \(size.height)") 
     return size.height 

而且這種方法:

var optimalHeight : CGFloat 
{ 
    get 
    { 
     let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.frame.width, height: CGFloat.greatestFiniteMagnitude)) 
     //let label = UILabel(frame: CGRectMake(0, 0, self.frame.width, CGFloat.greatestFiniteMagnitude)) 
     label.numberOfLines = 0 
     label.lineBreakMode = self.lineBreakMode 
     label.font = self.font 
     label.text = self.text 

     label.sizeToFit() 

     return label.frame.height 
    } 
} 

,併爲這兩個,附帶的圖像就像UILabel所顯示的那樣,正如任何人都能看到的那樣,它是離開的。 enter image description here

我也嘗試在estimatedHeightForRowAt和heightForRowAt方法中實現UITableViewAutomaticDimension,但是這行不通,兩行之後,它不會進一步擴展。 我打過電話estimatedRowHeight和rowHeight在viewDidLoad中()方法是這樣的:

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 300 //even went as far as using 800 

同樣的事情,停止後2線擴大。 我也看到了一些關於實現這些方法的東西:

tableView.setNeedsLayout() 
tableView.layoutIfNeeded() 

但什麼也沒有!我已經瀏覽了raywenderlich教程以及更多內容。我不知道我做錯了什麼。這可能是一個重複的問題,但我向你保證我已經嘗試了所有的解決方案,而且沒有任何對我有用。請有人看看這個,看看我做錯了什麼?

這些都是制約的截圖兩個標籤 enter image description hereenter image description here

+2

爲什麼不使用自動佈局?這就是你正在省略的「正確」部分。此功能(單元格自動將其內容自動調整爲其內容)是關於autolayout_的_all。 – matt

+0

@matt你是什麼意思?我最近開始學習快速,所以請你進一步解釋一下?這篇文章(https://www.appcoda.com/auto-layout-guide/)只是將自動佈局解釋爲具有約束條件,而我已經有了約束條件?還是有更多的呢? – Aria

+0

要使自動行高度起作用,必須通過視圖和約束從單元格頂部到底部有一條路徑。標籤是單元格中唯一的東西嗎?它是否受到頂部和底部的限制? – Connor

回答

0

所以我裹在後臺線程我在​​cellForRowAt離隊,這阻止我的細胞是動態的。在我發表了這個聲明之後,它完美地工作了!這樣浪費代碼時間來修復從未破解的東西