ios - 如何根据字符串大小在 UITableViewCell 中动态设置 UITextView 的高度?

标签 ios swift uitableview

我知道有人问过这个问题here ,但它并没有解决我的问题,因为接受的答案中的链接已关闭并且最小示例没有帮助。

这是我的自定义 UITableViewCell 及其所有约束的图片:

enter image description here

每个帖子都包含这些 UI 元素。唯一可以使每个单元格的高度不同的元素是 messageView,因为它的高度取决于显示的字符串。问题是,如何动态设置每个单元格的高度?这是我现在拥有的(不起作用,messageView 根本没有显示):

func cellForRowAt(indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(...) as! PostCell

    let message = ...
    cell.messageView.text = message

    return cell
}

func heightForRowAt(indexPath: IndexPath) -> CGFloat {
    var cellMinimumHeight: CGFloat = 120
    if let cell = tableView.cellForRow(at: indexPath) as? PostCell {
        let size = cell.messageView.sizeThatFits(cell.messageView.frame.size)
        cellMinimumHeight += size.height
    }

    return cellMinimumHeight
}

heightForRowAt函数中,if没有被执行,因此所有单元格的高度都是cellMinimumHeight = 120

如何让每个单元格的高度 = 120 + messageView 的高度?

--------------------------------编辑 1-------- ------------------------

画错了,messageView的高度没有设置

最佳答案

当使用自动布局动态调整单元格大小时,您实际上不需要实现 sizeThatFits(...)。如果约束设置正确,那么您只需禁用 UITextView 的滚动。

来自代码:

yourTextView.scrollEnabled = false

来自 IB:

选择您的 TextView 并打开属性检查器,然后

enter image description here

关于ios - 如何根据字符串大小在 UITableViewCell 中动态设置 UITextView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50459226/

相关文章:

ios - 在 Swift 中将 CamelCase 字符串分隔为空格分隔的单词

Swift - 预期 '{' 开始 setter 定义

ios - 如何在 Swift 应用程序中关闭蓝牙时显示警报?

arrays - 在 UITableView 的层次结构中对数组进行排序

ios - 里面有 TableView 的动态 Collection View 单元格?

iphone - 从 JSON 中为 UITableView 排序 NSDictionary

ios - tableview 不显示数据,除非用户触摸

ios - 以编程方式创建静态 TableView/单元格

ios - 更改表格 View 中所有单元格的文本颜色

ios - 在 GMSMapView Swift 上放置多个标记