我在故事板中有一个UIImageView,AspectRatio是1:1,在某些情况下,我想在ViewController中以编程方式更改为2:1。我在ViewController中创建了该约束的引用,但无法设置约束。
您可以在swift 3中以编程方式更改约束
let aspectRatioConstraint = NSLayoutConstraint(item: self.YourImageObj,attribute: .height,relatedBy: .equal,toItem: self.YourImageObj,attribute: .width,multiplier: (2.0 / 1.0),constant: 0)
self.YourImageObj.addConstraint(aspectRatioConstraint)
正如在Apple's guide中所述,有三种方法可以通过编程方式设置约束:
设置约束的最方便和流畅的方法是使用布局锚点。
只需一行代码即可更改ImageView的宽高比
imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 1.0/2.0).isActive = true
避免“[LayoutConstraints]无法同时满足约束条件。”你应该添加对ImageView的高度约束的引用然后停用它:
heightConstraint.isActive = false
根据约束条件将约束的乘数设置为0.5或2,它将变为2:1