UITableViewCell的动态高度计算取决于TextView的高度

时间:2017-02-24 05:12:40

标签: ios iphone swift3

我在tableview的内容中给出了textview的前导和尾随。我想动态计算Tableviewcell的高度。有时高度计算工作正常,但有时不能像5c这样的特定设备工作。

我使用以下代码来估算文字的高度:

func estimateFrameForText(text: String) -> CGRect {
    let size = CGSize(width: self.view.frame.size.width, height: 10000000)
    let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
    return NSString(string: text).boundingRect(with: size, options: options, attributes: [NSFontAttributeName: UIFont.init(name: FontStyle.FontName.kDefault, size: 15.0)!], context: nil)
}

这里重要的是文本是HTML文本,我已将其转换为纯文本。然后将纯文本传递给上述函数。

1 个答案:

答案 0 :(得分:3)

  1. 在tableview单元格的内容中为textview提供top,bottom,leading和trailing。
  2. 禁用滚动textview。然后,这个方法有效。它通常用于聊天单元格,其中我们希望链接的自动数据检测属性,电话号码减去uitextview的滚动。
  3. 使用以下表格视图方法设置自动行高计算

    func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat
    {
       return UITableViewAutomaticDimension
    }
    
    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
    
    {
       return 100
    }