删除以编程方式添加的约束

Removing constraints that were added programatically

我阅读了很多关于如何删除通过情节提要添加的约束、拖动出口然后删除等的主题,但是如何删除以编程方式添加的约束?例如

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

如何停用它,然后在需要时再次启用它。也许应该是这样的?

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

删除约束将在未来被弃用。

这是执行相同操作的替代方法。

Enable/Disable 约束与以下方法有关

Objective-C

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

Swift

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

您需要保留对约束的引用。

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

不需要时禁用它。

constraintName.isActive = false

需要时启用它。

constraintName.isActive = true

您应该将约束分配给 ViewController 中的 属性。然后将 .isActive 设置为 false 而不是 true.

您的代码应如下所示:

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

现在,激活它:

myConstraint.isActive = true

并禁用它:

myConstraint.isActive = false