将contentMode设置为UIViewContentModeScaleAspectFit时,如何设置UIImageView左alignment或右alignment?

我想在使用UIImageViewUIViewContentModeScaleAspectFit时控制图像alignment。

在这里输入图像说明

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

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

任何build议表示赞赏。

最后,我发现可以解决它的UIImageViewAligned项目。

我不认为你想要做甚至是可能的。 但是,我build议一个完全不同的方法。 为了不在显存中同时保存两张全尺寸的图像,只是为了显示其中的一部分,为什么不把图像的部分裁剪成您需要的确切尺寸。 这种方法会更有效率。

你可以在这里find关于裁剪UIImage的信息: 裁剪UIImage

而不是试图左alignment图像视图内的图像,你可以编程方式添加一个宽度约束图像视图,以便没有“多余的空间”。

假设您有一个带有“Aspect Fit”内容模式的UIImageView ,并且在界面构build器中添加了一个固定的高度约束。 然后,在相关的视图控制器中,检查图像的高宽比,并应用必要的宽度约束将图像视图捕捉到包含的图像。 例如:

 @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)) } } 

为了将这个应用到你的问题,你可以约束你的两个UIImageView是相邻的,为这两个(相同的值)设置一个固定的高度约束,然后使用上面的代码以编程方式设置宽度。