更新cellforRow中的约束

时间:2017-08-16 13:04:45

标签: ios uitableview ios-autolayout

我正在更新CellForRow方法中的约束。更新约束后我应该调用哪个方法,setUpdateConsraint()或layoutIfNeeded()?或者只是返回细胞。无需调用任何方法?

3 个答案:

答案 0 :(得分:0)

调用layoutIfNeeded()并实施方法prepareForReuse方法,您需要重置约束。

例如:

override func prepareForReuse() {
    super.prepareForReuse()

    yourConstraint.constant = defaultConstraint
}

为什么需要这样做:它会在您滚动后随机使用约束,因为重复使用了单元格。

答案 1 :(得分:0)

cellForRowAt是一个完全可以接受的更新约束的地方,然后只返回单元格。你不需要再打电话了:

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

    // Configure the cell...

    cell.theLabel.text = "\(indexPath)"
    cell.theHeightConstraint.constant = indexPath.row % 2 == 0 ? 40 : 100

    return cell
}

答案 2 :(得分:0)

func tableView(_ tableView:UITableView,willDisplay单元格:UITableViewCell,forRowAt indexPath:IndexPath)

是用于更新约束的Right方法。 在此方法中添加代码以更新约束。