【问题标题】:Image isn't bound to the UIImageView图像未绑定到 UIImageView
【发布时间】:2018-09-01 00:43:59
【问题描述】:

我在 Inspector 中创建了一个 UIImageView,我根据从网络上获取的选定图像在代码中调整了它的大小。但是,在第一次加载图像时,它会以图像正常分辨率而不是 UIImageViews 新创建的边界显示。

调整 UIImageView 的大小:

fullScreenImage.bounds.size = CGSize(width: scaledWidth, height: scaledHeight)

设置 UIImageView 的图片

let imageStringURL = images[indexPath.row].urls!["regular"]
let imageURL = URL(string: imageStringURL!)!
let imageData = try! Data(contentsOf: imageURL)
let image = UIImage(data: imageData)
fullScreenImage.image = image

这是第一次点击图片进入“全屏模式”时的样子

这是我第二次点击时的样子

不太确定为什么 Image 没有在指定的 UIImageView 范围内自行限制

【问题讨论】:

    标签: ios swift uiimageview uiimage


    【解决方案1】:

    您可以设置 UIImageView 的 UIViewContentMode 属性,而不是调整边界大小。这将调整 imageView 图像的大小以适应边界。

    fullScreenImage.contentMode = .scaleAspectFit

    【讨论】:

    • 刚试了一下,好像没修好。问题是我从在线 API 获取这些图像,并且有许多具有不同的纵横比。当我显示它时,我必须保持图像的原始纵横比,所以我必须使图像适合更改后的 UIImageView。我还在更改设备方向,需要更新 UIImageView 以考虑纵横比
    【解决方案2】:

    我找到了解决方法。我尝试将 contentMode 设置为适合方面,并且我还尝试在检查器中启用剪辑到边界,但是它们都不起作用。所以我只是研究了调整 UIImage 本身的大小并将其放入 UIImageView 中。 我在另一篇文章中找到了一个 UIImage 的扩展,可以调整它的大小

    extension UIImage{
        func resizeImage(newSize: CGSize) -> UIImage {
            // Guard newSize is different
            guard self.size != newSize else { return self }
    
            UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
            self.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
            let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext()
            return newImage
        }
    }
    

    如果有人知道更好的方法,请告诉我:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-29
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多