TableView中的自动布局问题

时间:2018-04-09 18:48:06

标签: ios swift uitableview

我使用此代码为UITableView使用动态高度单元格:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "QuestionsCell", for: indexPath) as! QuestionsCell

    cell.label1.text = ""
    cell.label2.text = ""
    cell.label1.text = some text from array
    cell.label2.text = some text from array

    cell.label1.lineBreakMode = .byWordWrapping
    cell.label1.numberOfLines = 0
    cell.label1.sizeToFit()

    return cell
}

然后我在Storyboard中为每个元素(顶部,底部,前导和尾随)固定了所有约束。在iPhone上一切正常,但在我滚动UITableView时会发生这种情况(动态标签高度):

enter image description here

2 个答案:

答案 0 :(得分:0)

sizeToFit()只会使cell1与文本一样大。 您还需要为表格视图单元格使用自动高度大小。

在viewDidLoad中,

self.tableView.rowHeight = UITableViewAutomaticDimension

您还需要确保从粗体标签到“12天前”标签有垂直约束,以确保它们之间始终存在垂直空间,因此它们不会重叠。

答案 1 :(得分:0)

您需要实现此委托方法:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

如果这不起作用,则检查顶部textView和底部textView之间是否存在垂直间距约束。