Ios UIImageView框架与其中的缩放UIImage相同(具有纵横比匹配)
我使用的是Ios UIImageView框架与其中的缩放UIImage相同(具有纵横比匹配),ios,swift,uiimageview,Ios,Swift,Uiimageview,我使用的是UIImageView,内容模式设置为Aspect-FitUIImageView可以正确调整我的图像大小,但在调整大小后,即使没有设置任何约束,它也不会更改自己的帧 我需要的是: 我需要UIImageView根据内部图像调整自己的帧大小。我已经在情节提要上配置了图像视图 我需要在视图中再次布局其他对象,因为UIImageView的大小已更改 我所尝试的: 我创造了: UIViewController(白色背景)→ UIImageView(灰色背景)→ 里面的样本图像 约束:前导和尾随
UIImageView
,内容模式设置为Aspect-FitUIImageView
可以正确调整我的图像大小,但在调整大小后,即使没有设置任何约束,它也不会更改自己的帧
我需要的是:
UIImageView
根据内部图像调整自己的帧大小。我已经在情节提要上配置了图像视图- UIViewController(白色背景)→ UIImageView(灰色背景)→ 里面的样本图像
- 约束:前导和尾随约束设置为零,Y约束设置为垂直对齐UIImageView
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let newSize = AVMakeRect(aspectRatio: backgroundImageView.image!.size, insideRect: backgroundImageView.frame)
backgroundImageView.frame = newSize
}
在该示例代码中,我计算了图像大小,并将帧大小设置为图像的大小。我不知道这是否是更好的方法,所以我不需要使用AVFoundation的方法
问题:其他对象放置不正确,因为UIImageView的大小已更改,约束现在无效
这种方法对我不起作用:
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
即使我将在viewdilayoutsubviews()
调用UIImageView大小计算,其他约束仍然使用旧的UIImageView大小
问题
宽度长的矩形图像无法缩放到高度长的帧。如果您想剪切一些图像,您可以选择使用
scaledSpectFill
,如果您不介意纵横比是否失真,您可以选择使用另一个contentMode
设置。@sdadas,我很满意纵横比匹配,我只需要消除顶部和底部边框=垂直调整UIImageView的大小。但我有其他的限制,所以。坏消息。虽然这里不是我的第一个答案()的完全副本,但我的建议已经足够接近了——要么更改您正在处理的规格,要么尝试将图像视图的背景设置为透明。当然,这是可以做到的。但是,如果您试图根据UIImageView的图像动态调整其大小,那么您将面临一个主要的难题。一个宽度长的矩形图像无法缩放到一个高度长的帧。如果您想剪切一些图像,您可以选择使用scaledSpectFill
,如果您不介意纵横比是否失真,您可以选择使用另一个contentMode
设置。@sdadas,我很满意纵横比匹配,我只需要消除顶部和底部边框=垂直调整UIImageView的大小。但我有其他的限制,所以。坏消息。虽然这里不是我的第一个答案()的完全副本,但我的建议已经足够接近了——要么更改您正在处理的规格,要么尝试将图像视图的背景设置为透明。当然,这是可以做到的。但是,在尝试根据UIImageView的图像动态调整UIImageView大小的过程中,您会遇到一些令人头疼的问题。