繁体   English   中英

快速删除长宽比约束

[英]Swift remove aspect ratio constraint

有没有办法消除长宽比约束?

例如

let aspectRatio = messageImage.constraint(withIdentifier: "aspectRatio")
aspectRatio?.isActive = false

我需要保留对象的所有约束,但只删除长宽比

在此处输入图片说明

这种性质的东西...

您可以创建约束的IBOutlet,然后在代码中将isActive设置为false。

假设您具有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

您可以使用func removeConstraint(_ constraint: NSLayoutConstraint)方法来删除添加的约束。

还提到,此方法在将来的版本中将不建议使用,应避免使用。 而是将NSLayoutConstraint的active属性设置为NO。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM