如何在 Swift 3 中根据 UIImage 的大小/比例调整 UIImageView 的大小?

2023-12-04

我有一个UIImageView用户可以下载UIImages各种格式。问题是我需要UIImageView根据给定图像的比例调整大小。

目前,我正在使用Aspect fit,但是UIImageView其自身的大部分仍然是空的。我想要UIImageView根据其内容调整自身大小。例如,如果图片是 1:1、4:3、6:2、16:9...

enter image description here

非常感谢帮助。

按照要求,这就是我想要的:

enter image description here

我有过一次UIImageView那是方形的,加载了 16:7 或其他尺寸的图像,并且UIImageView调整大小以适合图像的大小...


我花了很多时间试图找到与您遇到的相同问题的解决方案,这是唯一对我有用的解决方案(Swift 4,Xcode 9.2):

class ScaledHeightImageView: UIImageView {

    override var intrinsicContentSize: CGSize {

        if let myImage = self.image {
            let myImageWidth = myImage.size.width
            let myImageHeight = myImage.size.height
            let myViewWidth = self.frame.size.width
 
            let ratio = myViewWidth/myImageWidth
            let scaledHeight = myImageHeight * ratio

            return CGSize(width: myViewWidth, height: scaledHeight)
        }

        return CGSize(width: -1.0, height: -1.0)
    }

}

将类添加到项目中并将UIImageView设置为自定义类ScaledHeightImageView。图像视图的内容模式是Aspect Fit。

My problem与这篇文章中所述的相同。在我的原型 TableViewCell 的 ContentView 中,我有一个限制在每个边缘的垂直 StackView。 StackView 内部有一个 Label、ImageView 和另一个 Label。将 ImageView 设置为 AspectFit 还不够。图像将具有正确的大小和比例,但 ImageView 没有包裹实际图像,在图像和标签之间留下一堆额外的空间(就像上图所示)。 ImageView 高度似乎与原始图像的高度匹配,而不是与调整大小的图像的高度匹配(在aspectFit 完成工作之后)。由于各种原因,我发现的其他解决方案并没有完全解决问题。我希望这可以帮助别人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 3 中根据 UIImage 的大小/比例调整 UIImageView 的大小? 的相关文章

随机推荐