UIImageView内容模式

在这里输入图像说明

蓝线是imageview的边界。 UIImageViewcontentModeUIViewContentModeScaleAspectFit ,我想保持原始图片的比例。 如何使图片的左边缘位于UIImageView的左边缘? 但不像UIViewContentModeTopLeft模式。 保持规模,不留空白。 我的英文不好,希望你们能明白我在说什么。 非常感谢你。

  yourimageView.contentMode = UIViewContentModeCenter; if ( yourimageView.bounds.size.width > yourimageView.size.width && yourimageView.bounds.size.height > yourimageView.size.height) { yourimageView.contentMode = UIViewContentModeScaleAspectFit; } 

Swift3

 yourimageView.contentMode = .center if yourimageView.bounds.size.width > yourimageView.size.width && yourimageView.bounds.size.height > yourimageView.size.height { yourimageView.contentMode = .scaleAspectFit } 

你可以改变你的模式

 typedef NS_ENUM(NSInteger, UIViewContentMode) { UIViewContentModeScaleToFill, UIViewContentModeScaleAspectFit, // contents scaled to fit with fixed aspect. remainder is transparent UIViewContentModeScaleAspectFill, // contents scaled to fill with fixed aspect. some portion of content may be clipped. UIViewContentModeRedraw, // redraw on bounds change (calls -setNeedsDisplay) UIViewContentModeCenter, // contents remain same size. positioned adjusted. UIViewContentModeTop, UIViewContentModeBottom, UIViewContentModeLeft, UIViewContentModeRight, UIViewContentModeTopLeft, UIViewContentModeTopRight, UIViewContentModeBottomLeft, UIViewContentModeBottomRight, }; 

当我看到你的情况,我想到了这一点:

 _imageView.contentMode = UIViewContentModeLeft | UIViewContentModeScaleAspectFit; 

我试了一下,但事情变得更糟

所以我想你可能会调整你的imageView的大小,以适合你想要的大小,以此代码

 /// resize image to fit in show area without changing image ratio + (CGSize)resizeImageViewFromImageSize:(CGSize)imageSize toFitShowSize:(CGSize)showSize { CGFloat ratioW = imageSize.width / showSize.width; CGFloat ratioH = imageSize.height / showSize.height; CGFloat ratio = imageSize.width / imageSize.height; if (ratioW > 1 && ratioH > 1) { if (ratioW > ratioH) { imageSize.width = showSize.width; imageSize.height = imageSize.width / ratio; } else { imageSize.height = showSize.height; imageSize.width = imageSize.height * ratio; } } else if (ratioW > 1) { imageSize.width = showSize.width; imageSize.height = imageSize.width / ratio; } else if (ratioH > 1) { imageSize.height = showSize.height; imageSize.width = imageSize.height * ratio; } else { if (ratioW > ratioH) { if (showSize.width / imageSize.width <= 2) { imageSize.width = showSize.width; imageSize.height = imageSize.width / ratio; } } else { if (showSize.height / imageSize.height <= 2) { imageSize.height = showSize.height; imageSize.width = imageSize.height * ratio; } } } return imageSize; } 

然后把你的imageViewalignment屏幕的左侧

像这样

 imageView.contentMode = UIViewContentModeCenter; if (imageView.bounds.size.width > imageView.size.width && imageView.bounds.size.height > imageView.size.height) { imageView.contentMode = UIViewContentModeScaleAspectFit; } 

迅速

 import UIKit import AVFoundation let originalsize = CGSizeMake(500, 500) let rect = CGRectMake(0, 0, 320, 480) var result = AVMakeRectWithAspectRatioInsideRect(originalsize, rect) print(result)