Swift 删除宽高比限制
Swift remove aspect ratio constraint
有没有办法删除纵横比限制?
例如
let aspectRatio = messageImage.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false
我需要保留对象的所有约束,但只删除纵横比
这种性质的东西...
您可以使用 func removeConstraint(_ constraint: NSLayoutConstraint)
方法删除添加的约束。
还提到,此方法将在未来的版本中弃用,应避免使用。而是将 NSLayoutConstraint 的活动 属性 设置为 NO.
您可以创建约束的 IBOutlet,然后在代码中将 isActive 设置为 false。
假设您有 imageView
的引用并为约束指定了标识符。
在您的情况下,您已使用标识符命名约束:aspectRatio
.
所以对于上面的内容,你可以这样做:
//Get constraints filtered against a user-defined identifier
let filteredConstraints = imageView.constraints.filter {
[=10=].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 {
[=11=].identifier == identifier
}
return filteredConstraints.first
}
}
现在你终于可以做你最初想做的事了,即:
let aspectRatio = imageView.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false
有没有办法删除纵横比限制?
例如
let aspectRatio = messageImage.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false
我需要保留对象的所有约束,但只删除纵横比
这种性质的东西...
您可以使用 func removeConstraint(_ constraint: NSLayoutConstraint)
方法删除添加的约束。
还提到,此方法将在未来的版本中弃用,应避免使用。而是将 NSLayoutConstraint 的活动 属性 设置为 NO.
您可以创建约束的 IBOutlet,然后在代码中将 isActive 设置为 false。
假设您有 imageView
的引用并为约束指定了标识符。
在您的情况下,您已使用标识符命名约束:aspectRatio
.
所以对于上面的内容,你可以这样做:
//Get constraints filtered against a user-defined identifier
let filteredConstraints = imageView.constraints.filter {
[=10=].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 {
[=11=].identifier == identifier
}
return filteredConstraints.first
}
}
现在你终于可以做你最初想做的事了,即:
let aspectRatio = imageView.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false