使用 NSLayoutAnchor 时清除约束

sha*_*bow 1 ios nslayoutconstraint swift

我是在没有 interface builder 的情况下创建视图的新手。我正在使用NSLayoutAnchors创建视图!

当我使用在 viewcontroller 中创建的一些视图时:

let borderView:UIView = {

    let view = UIView()
    view.translatesAutoresizingMaskIntoConstraints = false
    view.backgroundColor = UIColor.lightGray
    view.isUserInteractionEnabled = false
    view.alpha = 0.5
    return view

}()
Run Code Online (Sandbox Code Playgroud)

然后我使用这个视图来边界这样的视图:

view.addSubview(borderView)
borderView.bottomAnchor.constraint(equalTo: headerView.bottomAnchor).isActive = true
borderView.leftAnchor.constraint(equalTo: headerView.leftAnchor).isActive = true
borderView.rightAnchor.constraint(equalTo: headerView.rightAnchor).isActive = true
borderView.heightAnchor.constraint(equalToConstant: 1).isActive = true
Run Code Online (Sandbox Code Playgroud)

然后在另一个视图中我尝试这个:

    informationView.addSubview(borderView)

    borderView.topAnchor.constraint(equalTo: informationView.topAnchor).isActive = true
    borderView.leftAnchor.constraint(equalTo: informationView.leftAnchor).isActive = true
    borderView.rightAnchor.constraint(equalTo: informationView.rightAnchor).isActive = true
    borderView.heightAnchor.constraint(equalToConstant: 1).isActive = true
Run Code Online (Sandbox Code Playgroud)

但看起来这个视图有它以前的约束结束显示约束错误!

如何borderView在重用之前删除约束?

Lou*_*nco 6

您不能重复使用视图。每个视图只能在视图层次结构中出现一次。您需要为每个要使用它的视图创建一个新的有边框的视图对象。

要回答这个问题,您可以使用以下命令从视图中删除约束 view.removeConstraints(view.constraints)