我创建了UIImageView
并为其分配了UIImage
。我将UIImageView内容模式设置为Aspect Fit
。如何从图像的顶部和底部删除填充,或者如何调整UIImageView
的大小以包围图像?我尝试了一切。
如果您要说的是获得图像的新尺寸,它将无法正常工作。仅在UIImageView
内获取图像大小会给出原始图像的宽度和高度。
请不要链接其他帖子。我已经读过了。它们不起作用。
答案 0 :(得分:3)
您可以手动计算UIImageView的帧大小,使其适合您的图像,或者使用AVMakeRectWithAspectRatioInsideRect(来自AVFoundation的方法)。
答案 1 :(得分:0)
因此,假设您将UIImageView设置为与视图相等的宽度。 重绘图像以适应的一种方法是使用Core Graphics。 您所做的是计算重绘图像以正确拟合所需的比例因子。 你可以在这里找到一些很棒的样品:
和一个很好的教程,用基准来更好地理解事物:
http://nshipster.com/image-resizing/
我使用的代码示例(基本上是根据我的需要修改的github方法之一):
{{1}}
答案 2 :(得分:0)
使用NSLayoutConstraint
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFit
view.addSubview(imageView)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
imageView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
imageView.widthAnchor.constraint(equalToConstant: 250).isActive = true
let heightLayout = imageView.heightAnchor.constraint(equalToConstant: 250)
heightLayout.isActive = true
imageView.image = UIImage(named: "SomeImage")
if let size = imageView.image?.size {
heightLayout.constant = size.height / size.width * 250 // 250 is imageView width
view.layoutIfNeeded()
}