我有一个填充UITableViewCell
的{{1}}子类。它是一个简单的子类,其中只有一个可变长度UITableView
,我想根据此标签的长度调整单元格的大小。在我的故事板中,我设置了约束,将标签钉在距离单元格内容的边缘15pt处。
然而,在UILabel
中,除非我为heightForRowAtIndexPath
指定preferredMaxLayoutWidth
值,否则它会一直给我不正确的高度。这似乎是不必要的,因为它可以根据我在标签上设置的约束来确定。直观地说,它是单元格的宽度 - 30(每边15pt),但不应该明确设置,特别是因为我可能会改变它,比如20,之后。
UILabel
如果没有在标签上明确设置override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! MyTableViewCell
let str = strangs[indexPath.row]
cell.myLabel.text = str
// If the following line is not included it does NOT return the right height
// cell.myLabel.preferredMaxLayoutWidth = tableView.bounds.width - 30
return cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height + 1
}
,如何调用systemLayoutFittingSize:
来计算单元格的高度?