有没有办法删除宽高比约束?
例如
let aspectRatio = messageImage.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false
我需要保留对象的所有约束,但只删除宽高比
这种性质的东西......
答案 0 :(得分:2)
您可以创建约束的IBOutlet,然后在代码中将isActive设置为false。
答案 1 :(得分:2)
假设您有imageView
的引用并且已将约束赋予标识符
在您的情况下,您已使用标识符命名约束:aspectRatio
。
因此,对于上述情况,您可以这样做:
//Get constraints filtered against a user-defined identifier
let filteredConstraints = imageView.constraints.filter {
$0.identifier == "aspectRatio"
}
//Get the first constraint (...as per your case)
let aspectRatio = filteredConstraints.first
//Deactivate it
aspectRatio?.isActive = false
为了进一步改进,您可以将UIView
扩展为:
extension UIView {
func constraint(withIdentifier identifier: String) -> NSLayoutConstraint? {
let filteredConstraints = self.constraints.filter {
$0.identifier == identifier
}
return filteredConstraints.first
}
}
现在你终于可以做你最初想要的了,即:
let aspectRatio = imageView.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false
答案 2 :(得分:0)
您可以使用func removeConstraint(_ constraint: NSLayoutConstraint)
方法删除已添加的约束。
还提到,此方法将在以后的版本中弃用,应该避免使用。而是将NSLayoutConstraint的活动属性设置为NO。