【发布时间】:2018-06-16 12:57:09
【问题描述】:
我知道有人问过这个问题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的高度没有设置
【问题讨论】:
-
你会改变messageView中的文字吗?如果没有,为什么不使用 UILabel 代替?
-
@trungduc,谢谢你的回复。我使用
UITextView是因为我希望能够检测消息中的电子邮件、链接、电话号码。 UITextView 提供了这样的功能 -
您是否设置了
scrollEnabled = false的UITextView? -
@nayem,太棒了!!!这解决了问题!请在下面发布答案,以便我接受它,除非您不关心声誉(然后我会稍后发布答案)
-
嗯,补充一下,等一下
标签: ios swift uitableview