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