在swift 3中以编程方式设置UIImageView AspectRatio约束

Sha*_*lam 5 constraints aspect-ratio ios swift3

我在故事板中有一个UIImageView,AspectRatio是1:1,在某些情况下,我想在ViewController中以编程方式更改为2:1.我在ViewController中创建了该约束的引用,但无法设置约束.

Jug*_*ara 8

您可以在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)
Run Code Online (Sandbox Code Playgroud)


Eug*_*sov 8

Apple指南中所述,可以通过三种方式以编程方式设置约束:

  • 您可以使用布局锚点
  • 您可以使用NSLayoutConstraint类
  • 您可以使用视觉格式语言

设置约束的最方便,最流畅的方法是使用布局锚。

更改ImageView的长宽比仅需一行代码

imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 1.0/2.0).isActive = true
Run Code Online (Sandbox Code Playgroud)

结果视图

避免“ [LayoutConstraints]无法同时满足约束。” 您应该添加对ImageView的高度约束的引用,然后将其停用:

heightConstraint.isActive = false
Run Code Online (Sandbox Code Playgroud)