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

标签 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. 在 tableview 单元格的内容中为 textview 提供顶部、底部、前导和尾部。
  2. 禁用 TextView 的滚动。然后,此方法有效。它通常用于聊天单元格,其中我们希望自动检测链接、电话号码的数据属性减去 uitextview 的滚动。
  3. 使用表格 View 的以下方法设置自动行高计算

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

关于ios - UITableViewCell 的动态高度计算取决于 TextView 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431242/

相关文章:

ios - 获取 Xcode 5 以警告新的 API 调用

ios - 在 Core Data 中保存 PHAsset?

ios - 如何使用 SwiftUI 显示全栈模式?

iphone - 我可以在我的 iOS 应用程序中使用第 3 方支付系统吗?

ios - Xcode 8 中奇怪的终端消息

ios - 无法使用类型为 'enumerateObjects' 的参数列表调用 '((AnyObject!, NSInteger, UnsafeMutablePointer<ObjCBool>) -> ())'

ios - 错误打印 user.default swift 3

ios - 在另一个 View 中禁用按钮

android - 用于包含所有 iPhone 和 Android 手机的最佳单个 CSS 媒体查询最小宽度是多少?

ios - 停止在 UITableViewCell 中重复值