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

问题描述 投票:3回答:3

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

ios swift3 constraints aspect-ratio
3个回答
7
投票

您可以在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)

4
投票

正如在Apple's guide中所述,有三种方法可以通过编程方式设置约束:

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

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

只需一行代码即可更改ImageView的宽高比

imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 1.0/2.0).isActive = true

Result View

避免“[LayoutConstraints]无法同时满足约束条件。”你应该添加对ImageView的高度约束的引用然后停用它:

heightConstraint.isActive = false

0
投票

根据约束条件将约束的乘数设置为0.5或2,它将变为2:1

© www.soinside.com 2019 - 2024. All rights reserved.