如何从Swift中删除适合UIImageView方面的间距

时间:2015-09-10 23:08:19

标签: ios swift uiimageview uiimage

我创建了UIImageView并为其分配了UIImage。我将UIImageView内容模式设置为Aspect Fit。如何从图像的顶部和底部删除填充,或者如何调整UIImageView的大小以包围图像?我尝试了一切。

如果您要说的是获得图像的新尺寸,它将无法正常工作。仅在UIImageView内获取图像大小会给出原始图像的宽度和高度。

请不要链接其他帖子。我已经读过了。它们不起作用。

enter image description here

3 个答案:

答案 0 :(得分:3)

您可以手动计算UIImageView的帧大小,使其适合您的图像,或者使用AVMakeRectWithAspectRatioInsideRect(来自AVFoundation的方法)。

答案 1 :(得分:0)

因此,假设您将UIImageView设置为与视图相等的宽度。 重绘图像以适应的一种方法是使用Core Graphics。 您所做的是计算重绘图像以正确拟合所需的比例因子。 你可以在这里找到一些很棒的样品:

https://github.com/natecook1000/Image-Resizing/blob/master/Image%20Resizing/ImageResizingMethods.swift

和一个很好的教程,用基准来更好地理解事物:

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