【问题标题】:How to get uitextview height for collectionviewcell如何获取collectionviewcell的uitextview高度
【发布时间】:2017-02-11 08:38:42
【问题描述】:

我正在尝试在 collectionviewcell 中使用 textview 构建 collectionview。我想根据 textview 计算单元格的高度。

我使用 sizeThatFits 方法计算高度,但随着文本变大,collectionviewcell 的高度与文本不匹配。

我尝试使用 boundingRect 但结果也不正确

他们无论如何都要计算正确的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)

}

【问题讨论】:

  • 你试过boundingRectWithSize ??
  • 是的,我试过上面说的boundingRect,结果还是不正确

标签: ios uicollectionview uitextview uicollectionviewcell


【解决方案1】:

默认情况下,创建UITextView的新实例时,字体属性为nil,在使用sizeThatFit之前,必须将字体关联到UITextView。

如果您使用默认字体,只需添加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)

}

【讨论】:

    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多