UIImageView内容模式

9

输入图像描述

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


将您的内容模式设置为UIViewContentModeScaleAspectFill.. - Milan patel
4个回答

6
 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,
};

0

Swift

import UIKit
import AVFoundation



let originalsize = CGSizeMake(500, 500)
let rect = CGRectMake(0, 0, 320, 480)


var result = AVMakeRectWithAspectRatioInsideRect(originalsize, rect)

print(result)

0

就像这样

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

0

当我看到你的情况时,我想到了这个:

_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对齐到屏幕左侧


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接