使用 NSLayoutAnchor 时清除约束
clear constraints when using NSLayoutAnchor
我是不使用界面生成器创建视图的新手。
我正在使用 NSLayoutAnchors
创建视图!
当我像这样使用在 viewcontroller 中创建的某些视图时:
let borderView:UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor.lightGray
view.isUserInteractionEnabled = false
view.alpha = 0.5
return view
}()
然后我使用这个视图在这样的视图中添加边框:
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
然后在另一个视图中我试试这个:
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
但看起来这个视图有它以前的约束结束显示约束错误!
如何在重新使用之前删除 borderView
约束?
您不能重复使用视图。每个视图只能在视图层次结构中出现一次。您需要为每个要使用它的视图创建一个新的边框视图对象。
要回答这个问题,您可以使用 view.removeConstraints(view.constraints)
从视图中删除约束
我是不使用界面生成器创建视图的新手。
我正在使用 NSLayoutAnchors
创建视图!
当我像这样使用在 viewcontroller 中创建的某些视图时:
let borderView:UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = UIColor.lightGray
view.isUserInteractionEnabled = false
view.alpha = 0.5
return view
}()
然后我使用这个视图在这样的视图中添加边框:
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
然后在另一个视图中我试试这个:
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
但看起来这个视图有它以前的约束结束显示约束错误!
如何在重新使用之前删除 borderView
约束?
您不能重复使用视图。每个视图只能在视图层次结构中出现一次。您需要为每个要使用它的视图创建一个新的边框视图对象。
要回答这个问题,您可以使用 view.removeConstraints(view.constraints)