2017-04-12 47 views
1

我是新创建视图,没有界面构建器。 我使用NSLayoutAnchors来创建视图!使用NSLayoutAnchor时明确的约束

当我使用的视图 - 控制创造了这样一些观点:

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约束条件?

+0

的可能的复制[删除影响一个UIView所有约束(http://stackoverflow.com/questions/24418884/remove-all-constraints -affecting-a-uiview) – dirtydanee

+0

这不是重复的,因为答案不是重用视图(在这种情况下删除约束不会有帮助) –

回答

1

您无法重用视图。每个视图一次只能位于视图层次结构中。您需要为每个要使用它的视图创建一个新的边界视图对象。

要回答这个问题,你可以从一个视图中删除的约束与view.removeConstraints(view.constraints)

+0

使用此方法制作一些边框视图的最佳做法是什么? – shaibow

+0

类似于:(1)没有它的属性(2)创建一个func来获取视图,创建一个新的边框视图,设置约束并将其作为子视图添加到传入的视图中,所以您只需要'addBorderView(to:view)' –

+0

完美,这是一个很大的帮助谢谢<3 – shaibow