在我的故事板上,我有一个UITableView
和动态生成的UITableViewCell
。每个单元格包含2个标签和1个文本视图:
我有一个代码,可将文本字段的大小调整为文本量:
let fixedWidth = cell.myComment.frame.size.width
cell.myComment.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
let newSize = cell.myComment.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
var newFrame = cell.myComment.frame
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
cell.myComment.frame = newFrame;
当我将textView的背景色设置为红色时,它工作正常,我看到:
和单元格本身-我在这里设置大小:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
if indexPath.row == 0 {
return 100//this is my static cell
}
else {
return 117; //for now it's hardcoded - how can I set this value dynamically based on content?
}
}
因此,正如我在上面的评论中所写-如何根据文本视图中的文本量动态设置单元格的高度?
最佳答案
获得自我调整大小的表格单元(基于自动布局,我建议)的关键如下:
将子视图添加到contentView
的UITableViewCell
在子视图和contentView
之间提供约束,以使子视图到达表单元格的所有边缘。在您的情况下,这可能意味着将leading
的trailing
,top
,bottom
和UITextView
边缘与contentView
的相应边缘对齐。
将行高设置为UITableViewAutomaticDimension
,而不是硬编码的CGFloat
。
在控制器中的某个位置,用tableView.estimatedRowHeight = x
提供高度的估算值(硬编码常数很好,这是为了提高性能)。