蓝线是图片视图的边界。
UIImageView
的contentMode
为UIViewContentModeScaleAspectFit
,
我想保持原始图片的比例。
如何使图片的左边缘位于UIImageView
的左边缘?
但不像UIViewContentModeTopLeft
模式。 保持比例,左侧没有空白。
我的英语不好,希望你们能理解我在说什么。
非常感谢。
蓝线是图片视图的边界。
UIImageView
的contentMode
为UIViewContentModeScaleAspectFit
,
我想保持原始图片的比例。
如何使图片的左边缘位于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,
};
Swift
import UIKit
import AVFoundation
let originalsize = CGSizeMake(500, 500)
let rect = CGRectMake(0, 0, 320, 480)
var result = AVMakeRectWithAspectRatioInsideRect(originalsize, rect)
print(result)
就像这样
imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > imageView.size.width && imageView.bounds.size.height > imageView.size.height) {
imageView.contentMode = UIViewContentModeScaleAspectFit;
}
当我看到你的情况时,我想到了这个:
_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;
}
然后将您的imageView对齐到屏幕左侧