我知道有人问过这个问题here ,但它并没有解决我的问题,因为接受的答案中的链接已关闭并且最小示例没有帮助。
这是我的自定义 UITableViewCell 及其所有约束的图片:
每个帖子都包含这些 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 并打开属性检查器,然后
关于ios - 如何根据字符串大小在 UITableViewCell 中动态设置 UITextView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50459226/