使用scaleAspectFit时UIImageView中的空空间

问题描述 投票:0回答:1

这里是我的问题的an image。我的问题是,UIImageView的右侧有一个很小的空白空间,该空间被限制在视图控制器的视图中。由于设置了背景,因此为绿色,并且在设备上更为突出。这很奇怪,因为考虑到图像是在手机上拍摄的,并且我正在使用scaleAspectFit,因此图像应该适合整个屏幕。

let imageView: UIImageView = {
    let imageView = UIImageView()
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.isUserInteractionEnabled = true
    imageView.contentMode = .scaleAspectFit
    imageView.backgroundColor = .green
    imageView.clipsToBounds = true
    return imageView
}()

这里是约束的代码:

func setupImageView() {
    self.view.addSubview(imageView)
    let imageViewConstraints = [
        imageView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
        imageView.topAnchor.constraint(equalTo: self.view.topAnchor),
        imageView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
        imageView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
    ]
    NSLayoutConstraint.activate(imageViewConstraints)
}

我基本上是使用self.imageView.image设置图像,最后在右侧留有空白,只有在使用明亮的颜色作为imageView背景时,该空白才值得注意。不知道这是否是一个错误。我不使用填充的唯一原因是我想在显示整个图像时保持外观。

ios swift uiimageview
1个回答
0
投票

contentMode scaleAspectFit将保持图像的比例,显示图像的全部内容。由于您的照片比例与屏幕相同,因此,如果imageView高度小于屏幕,则图像显示宽度也将小于屏幕,这会导致显示背景green颜色。为了确保imageView适合屏幕,您可以在其上添加边框:

imageView.layer.borderColor = UIColor.red.cgColor
imageView.layer.borderWidth = 1.0
© www.soinside.com 2019 - 2024. All rights reserved.