2017-06-20 106 views
-1

我讀了很多關於如何刪除通過故事板添加的約束,拖動插座,然後刪除等,但我如何刪除以編程方式添加的約束?例如刪除以編程方式添加的約束

firstView.topAnchor.constraints(equalTo: secondView.bottomAnchor, constant: 15).isActive = true 

如何禁用它,然後在需要時再次啓用它。也許它應該是類似的東西?

firstView.removeConstraint(firstView.topAnchor.constraints(equalTo: secondView.bottomAnchor)) 

回答

2

您應該將您的約束分配給您的ViewController中的某個屬性。然後將​​設置爲false而不是true。

您的代碼應該是這樣的:

let myConstraint = firstView.topAnchor.constraint(equalTo: secondView.bottomAnchor, constant: 15) 

現在,來激活它:

myConstraint.isActive = true 

並禁用它:

myConstraint.isActive = false 
+1

非常感謝! – Sargot

+0

@Sargot歡迎您!如果您對此方法有疑問,請務必詢問。 –

-3

刪除約束將來會被棄用。

這是做相同的替代方法。

啓用/禁用約束做下面的方法

Objective-C的

viewHeightConstraint.active = YES;  // Enable 
viewHeightConstraint.active = NO;  // Disable 

斯威夫特

viewHeightConstraint.isActive = true // Enable 
viewHeightConstraint.isActive = false // Disable 
+0

是什麼viewHeight?這是你打算激活/激活的觀點嗎?我認爲它只適用於限制。對不起,我完全不明白你的答案 – Sargot

+1

Objective-C –

0

你需要一個參考存到自己的約束。

let constraintName:NSLayoutConstraint = firstView.topAnchor.constraint(equalTo: secondView.bottomAnchor, constant: 15) 
    constraintName.isActive = true 

當你不需要它時禁用它。

constraintName.isActive = false 

當你想要它的時候啓用它。

constraintName.isActive = true 
+0

中的'YES'和'TRUE'是布爾值,非常感謝! – Sargot

+0

'NSLayoutYAxisAnchor'沒有成員約束' – Maddy

+1

它應該是'topAnchor.constraint()',而不是'topAnchor.constraints()'。也不需要明確的類型註釋':NSLayoutConstraint' –

相關問題