2015-10-26 113 views
0

我一直在研究這個問題一天以上,而且我可以誠實地說,我完全被這個問題解釋爲什麼這個工作並不像我期望的那樣工作。根據UILabel內容調整UITableViewCell高度的大小

我試圖有一個UITableViewCell擴展,當選擇到正確的大小基於其中的UILabel。我用下面的代碼,以確定的UILabel需要的大小:

extension UILabel { 

    func requiredHeight() -> CGFloat{ 

     let label:UILabel = UILabel(frame: CGRectMake(0, 0, self.frame.width, CGFloat.max)) 
     label.text = self.text 
     label.numberOfLines = 0 
     label.font = self.font 

     label.sizeToFit() 


     print("Final Size - \(label.frame.height)") 
     return label.frame.height + 10 
    } 
} 

我的問題是,儘管這樣的尺寸 - 當細胞是「heightForRowAtIndexPath」法內調整 - 它仍然是不正確的大小和字符串被截斷,這可以在下面的圖片中看到。

enter image description here

要注意的 - 我儘快收集細胞所需要的尺寸作爲視圖加載和文本已經填充到的UILabel。

requiredHeight = overviewLabel.requiredHeight() 
     if requiredHeight > overviewCell.frame.height { 
      expander.hidden = false 
     } else { 
      expander.hidden = true 
     } 

有關如何解決這個問題的任何建議將不勝感激。

回答

2

試試這個片段。只需提供字體和大小

斯威夫特3.X

func requiredHeight() -> CGFloat{ 
    let font = UIFont(name: "Helvetica", size: 16.0) 
    let label:UILabel = UILabel(frame: CGRect(x:0, y:0, width:200, height:CGFloat.greatestFiniteMagnitude)) 
    label.numberOfLines = 0 
    label.lineBreakMode = NSLineBreakMode.byWordWrapping 
    label.font = font 
    label.text = self.text 
    label.sizeToFit() 
    return label.frame.height + //Add some space as a part of your bottom and top constraint 
} 

斯威夫特的確切名稱2.2

func requiredHeight() -> CGFloat{ 
    let font = UIFont(name: "Helvetica", size: 16.0) 
    let label:UILabel = UILabel(frame: CGRectMake(0, 0, 200, CGFloat.max)) 
    label.numberOfLines = 0 
    label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    label.font = font 
    label.text = self.text 
    label.sizeToFit() 
    return label.frame.height + //Add some space as a part of your bottom and top constraint 
} 

假設你的拉貝l與頂部和底部約束爲5和5分別,他們做出return語句作爲

return label.frame.height + 10 

注意: - 寬度應該是你想要的標籤的寬度。它應該是根據你的UITableViewUIView

+0

哦,哇,就這麼簡單。但是,請問爲什麼需要手動定義字體?我覺得它非常奇怪,我無法使用'label.font = self.font' –

+0

它對你有用嗎? –

+0

我也曾經遇到同樣的問題。可能是一些奇怪的問題,label.font = self.font不工作。我搜索了一些只能提供你的UILabel正在使用的確切字體和大小的地方,而且只有很少的限制條件。至少爲我工作,你呢? –

相關問題