如何阻止在UIImageView内拉伸的图像?
我有一个UIImageView ,我已经设置帧大小为x = 0, y = 0, width = 404, height = 712 。 在我的项目中,我需要dynamic地更改UIImageView的图像。 
我正在使用此代码来更改图像:
 self.imageView.image = [UIImage imageNamed:@"setting-image.png"]; 
 问题是,当*.png图像大小小于UIImageView框架大小时,图像拉伸。 我不想让它伸展。 有没有办法做到这一点? 
您可以使用
 self.imageView.contentMode = UIViewContentModeScaleAspectFit; 
Swift 3:
 imageView.contentMode = .scaleAspectFit 
 或者UIViewContentModeCenter / .center ,或UIView文档中描述的任何其他模式。 
设置clipsToBounds与UIViewContentModeScaleAspectFit contentMode组合是什么对我来说。 希望帮助别人!
 imageView.clipsToBounds = YES; imageView.contentMode = UIViewContentModeScaleAspectFit; 
 使用contentMode属性。 您可能需要UIViewContentModeScaleAspectFit或UIViewContentModeCenter 。 
在界面生成器中将UIImage的模式从“缩放填充”更改为“中心”。 确保您的图像是您需要的确切大小。

更改contentMode,例如:
 imageView.contentMode = UIViewContentModeScaleAspectFit; 
Swift 3的更新:
 imageView.contentMode = .scaleAspectFit 
你必须设置CGSize作为你的图像宽度和高度,所以图像不会伸展,它将安排在imageview的中间。
 - (UIImage *)imageWithImage:(UIImage *)image scaledToFillSize:(CGSize)size { CGFloat scale = MAX(size.width/image.size.width, size.height/image.size.height); CGFloat width = image.size.width * scale; CGFloat height = image.size.height * scale; CGRect imageRect = CGRectMake((size.width - width)/2.0f, (size.height - height)/2.0f, width, height); UIGraphicsBeginImageContextWithOptions(size, NO, 0); [image drawInRect:imageRect]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 
如何使用原始大小的图像 – 没有任何拉伸
-  只需将UIImage的模式从scale to fill到界面生成器中的Aspect Fit。

 使用这个为你的UIImageView 
 imageView.contentMode = UIViewContentModeScaleAspectFill; 
你不会得到任何空间和规模保存。 但是,图像的某些部分将被删除。
如果您使用以下内容:
 imageView.contentMode = UIViewContentModeScaleAspectFit; 
会有一些空的空间,但规模保存。
当图像大于imageivew时仍然伸展
迅速
  let qCodeImage = UIImage(named: "qcode-placeholder.png")! let qCodeImageView = UIImageView(frame: CGRectMake(0, 0, CGRectGetWidth(cardView.frame)-30, CGRectGetWidth(cardView.frame)-30)) qCodeImageView.image = qCodeImage qCodeImageView.clipsToBounds = true qCodeImageView.contentMode = UIViewContentMode.ScaleToFill qCodeImageView.center = cardView.center