2017-06-20 74 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' –

相关问题