systemLayoutSizeFittingSize没有为我的UILabel

时间:2015-08-12 20:39:47

标签: ios swift autolayout tableviewcell

我使用静态表视图来显示一些数据,因为我的数据是动态的,我需要一个Cell,可以根据其内容调整其大小。我已覆盖heightForRowAtIndexPath:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath.row == 4 {
        let size = itemDescription.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
        return size.height
    }
    return super.tableView(tableView, heightForRowAtIndexPath: indexPath)
}

我已经尝试了UILayoutFittingCompressedSizeUILayoutExpandedSize,两者都会返回一个高度为140的CGSize,这不足以显示我的文字。

我也尝试增加UILabel中的行数,但它也没有用。

在故事板上,我的单​​元格是基本的TableViewCell

有没有人知道发生了什么?

1 个答案:

答案 0 :(得分:2)

要使用自行调整单元格,您无需覆盖heightForRowAtIndexPath。覆盖estimatedHeightForRowAtIndexPath并返回估算值或UITableViewAutomaticDimension。而且,重要的是,您必须对单元格的所有4个边都有明确的约束。对于UILabel,将0指定为行的数字以启用文本自动高度。