更改布局约束时,UITableView偏移发生偏移

时间:2019-09-04 18:20:08

标签: ios swift

我有一个UITableView,它在其超级视图的边缘略微延伸。响应按钮的点击,我通过设置约束常数来移动表格。这是一个简单的示例:

@IBOutlet weak var tableViewTrailingConstraint: NSLayoutConstraint!

var edgeHidden: Bool = true

@IBAction func shiftTableButtonTapped(_ sender: UIButton) {
    shiftTable(edgeHidden)
}

func shiftTable(showEdge: Bool) {
    // Finish any pending layout changes
    view.layoutIfNeeded()

    // Update location of table
    tableViewTrailingConstraint.constant = showEdge ? -50.0 : 0.0

    // Shift the table
    UIView.animate(duration: 0.3) { [weak self] in
        guard let view = self?.view else { return }
        view.layoutIfNeeded()
    }
}

执行此操作时,表格将按预期移动,但内容偏移量也沿y方向更改。似乎scrollview要根据布局更改而移动。

有人知道解决这个问题的方法吗?我还没有运气来重置内容偏移量(这样做时我的行为异常怪异),也没有禁用滚动帮助。

如果我不设置动画,也可以呼叫setNeededLayout()而不是layoutIfNeeded()或其他响应建议的其他无数事物。

0 个答案:

没有答案