在将contentMode设置为UIViewContentModeScaleAspectFit时,如何设置UIImageView左对齐或右对齐?

时间:2013-09-05 02:32:59

标签: ios uiview uiimageview uiimage

我想在UIViewContentModeScaleAspectFit中使用UIImageView时控制图像对齐。

enter image description here

例如,我在上面的一个视图中有两个UIImageView。这两个UIImageView的contentMode是UIViewContentModeScaleAspectFit。现在我想将图像3设置为右对齐,将图像4设置为左对齐,以便这两个图像可以在一起。

我尝试将contentMode设置为UIViewContentModeScaleAspect|UIViewContentModeLeft,但这会让事情变得更糟。

任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:28)

最后,我找到了可以解决问题的UIImageViewAligned项目。

感谢@Marchy,还有快速版本UIImageViewAlignedSwift

答案 1 :(得分:5)

不是试图在图像视图中左对齐图像,而是可以以编程方式向图像视图添加宽度约束,这样就不会有多余的空间"。

假设你有double" Aspect Fit"内容模式,以及在界面构建器中添加的固定高度约束。然后,在相关视图控制器中,检查图像的纵横比并应用必要的宽度约束将图像视图捕捉到包含的图像。 E.g:

UIImageView

要将此问题应用于您的问题,您可以将两个@IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // UIImage loaded from somewhere... imageView.image = uiImage // Check the UIImageView for existing height constraints let heightConstraints = imageView.constraints.filter{$0.firstAttribute == .height} if let imageViewHeight = heightConstraints.first?.constant { // Calculate the width which would make the image view fit // the image perfectly, and constrain the view to that width. let desiredImageViewWidth = (imageViewHeight / uiImage.size.height) * uiImage.size.width imageView.addConstraint(NSLayoutConstraint(item: imageView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: desiredImageViewWidth)) } } 约束为彼此相邻,为两者设置固定的高度约束(具有相同的值),然后以编程方式设置宽度上面的代码。

答案 2 :(得分:-1)

某些人的另一个选择可能是调整UIImageView上的内容拥抱优先级。在Interface Builder中,向UIImageView添加一个具有低优先级的约束。

enter image description here

这将满足约束,直到添加图像。然后将UIImageView的内容拥抱优先级设置为宽度的高值(如果是顶部/底部对齐,则设置为高度)。

enter image description here

然后只需将UIImageView的内容模式设置为您想要的内容。希望这有帮助!