2017-04-12 43 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