我想在UIViewContentModeScaleAspectFit
中使用UIImageView
时控制图像对齐。
例如,我在上面的一个视图中有两个UIImageView
。这两个UIImageView
的contentMode是UIViewContentModeScaleAspectFit
。现在我想将图像3设置为右对齐,将图像4设置为左对齐,以便这两个图像可以在一起。
我尝试将contentMode设置为UIViewContentModeScaleAspect|UIViewContentModeLeft
,但这会让事情变得更糟。
任何建议都表示赞赏。
答案 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)