2017-02-11 68 views
1

我正在嘗試使用textview內部的collectionviewcell.Build構建collectionview,我想根據textview計算單元格的高度。如何爲collectionviewcell獲取uitextview高度

我使用sizeThatFits方法來計算高度,但隨着文本變大,collectionviewcell的高度與文本不匹配。

我試圖用boundingRect但結果也是不正確

result picture

是他們無論如何計算的TextView的正確的高度?或者如何解決這個問題。

謝謝!

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    let textview = UITextView() 

    textview.text = statusText[indexPath.row] 

    let actualsize = textview.sizeThatFits(CGSize(width: collectionView.frame.size.width, height: CGFloat.greatestFiniteMagnitude)) 

    return CGSize(width: collectionView.frame.size.width, height: actualsize.height) 

} 
+0

你嘗試''boundingRectWithSize? –

+0

嗯,我按照上面的說法試過了boundingRect,結果仍然不正確 –

回答

1

默認情況下,當您創建的UITextView一個新實例的字體屬性是nil,你必須在字體的UITextView使用sizeThatFit前關聯。

如果您使用的是默認字體,只需添加textview.font = UIFont.systemFont(ofSize: 14)

改變你的功能是這樣的:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    let textview = UITextView() 

    textview.text = statusText[indexPath.row] 
    textview.font = UIFont.systemFont(ofSize: 14) 

    let actualsize = textview.sizeThatFits(CGSize(width: collectionView.frame.size.width, height: CGFloat.greatestFiniteMagnitude)) 

    return CGSize(width: collectionView.frame.size.width, height: actualsize.height) 

}