Swift UIImageView拉伸的方面

UIImageView错误地呈现图像的大小。 使用Scale Aspect Fit,如果UIImageView是一个正方形,图像是正确的高宽比,在图像没有填充的区域有透明度。

//Image is Square & Correct Size var imageView = UIImageView(frame: CGRectMake(0, 50, 320, 320)) imageView.clipsToBounds = true imageView.contentMode = UIViewContentMode.ScaleAspectFit //Image is Rectangle & Incorrect Size var imageView = UIImageView(frame: CGRectMake(0, 50, 320, 450)) imageView.clipsToBounds = true imageView.contentMode = UIViewContentMode.ScaleAspectFit 

UIImageView需要触摸边缘,并在屏幕的顶部和底部有透明的空间,内部的图像需要保持原来的比例,而不是拉长。 我附上了UIImageView中的图像如何呈现的两个图像。

正确的方面ImageView带有错误外观的ImageView

我向UIImageView添加了一个自动调整掩码,它现在显示正确的比例。

 imageView.autoresizingMask = UIViewAutoresizing.FlexibleBottomMargin | UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleRightMargin | UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleWidth imageView.contentMode = UIViewContentMode.ScaleAspectFit 

这个答案对我有帮助: 捕获的照片与AVCaptureSession sessionPreset = AVCaptureSessionPresetPhoto拉伸,因为我正在使用通过手机相机拍摄的图像。

Swift 3你的代码版本:

 imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleBottomMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleTopMargin] imageView.contentMode = .scaleAspectFit // OR .scaleAspectFill imageView.clipsToBounds = true 

我有同样的问题,什么解决它是确保设置内容模式后设置imageView图像。 即:

  self.imageView.contentMode = UIViewContentMode.ScaleAspectFit self.imageView.image = imageChosen 

干杯

这是UIViewContentMode.ScaleAspectFit的预期行为。 从文档:

UIViewContentModeScaleAspectFit

通过保持高宽比来缩放内容以适应视图大小的选项。 视图边界的其余区域是透明的。

从你所描述的看来,你需要UIViewContentMode.ScaleAspectFill

UIViewContentModeScaleAspectFill

缩放内容以填充视图大小的选项。 内容的某些部分可能会被剪辑以填充视图的边界。