如何管理UIImageView内容模式?

时间:2013-01-03 06:26:18

标签: iphone ios ipad uiimageview

我有一个UIImageView,有一些固定的矩形。但我的图像尺寸不固定。我想根据UIImageView的rect大小显示图像。无论图像的分辨率是大还是大,它都必须根据UIImageView的大小固定显示。我对使用以下资产感到困惑。

UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw

在autoresize mask中设置什么? 他们的表现如何?

7 个答案:

答案 0 :(得分:88)

请尝试使用此代码,希望它能为您效劳。

UIImageView contentMode设置为UIViewContentModeScaleAspectFill,如下所示:

imageView.contentMode = UIViewContentModeScaleAspectFill;

设置UIImageView的autoresizingMask如下:

imageView.autoresizingMask =   
    ( UIViewAutoresizingFlexibleBottomMargin
    | UIViewAutoresizingFlexibleHeight
    | UIViewAutoresizingFlexibleLeftMargin
    | UIViewAutoresizingFlexibleRightMargin
    | UIViewAutoresizingFlexibleTopMargin
    | UIViewAutoresizingFlexibleWidth );

答案 1 :(得分:2)

在swift中你也设置了内容模式

var newImgThumb : UIImageView
newImgThumb = UIImageView(frame:CGRectMake(0, 0, 100, 70))
newImgThumb.contentMode = .ScaleAspectFit

答案 2 :(得分:2)

这是swift的解决方案:

let imageView = UIImageView(image: UIImage(named: "backgroundImage"))
imageView.frame = tableView.frame
imageView.contentMode = .ScaleAspectFill
tableView.backgroundView = imageView

答案 3 :(得分:2)

你只需要这两行:

imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.layer.clipsToBounds = YES; // Must do this or else image will overflow

答案 4 :(得分:1)

如果您想根据比例制作UIImageView尺寸,则必须将其模式设为UIViewContentModeScaleAspectFit

 yourimage.contentMode=UIViewContentModeScaleAspectFit;

让我知道它的工作与否!!!

快乐编码。

答案 5 :(得分:1)

值得注意的是,swift 3已经改变如下

ScaleAspectFitscaleAspectFit

ScaleAspectFill to。scaleAspectFill

答案 6 :(得分:0)

希望这对你有帮助

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);

image = [UIImage imageWithCGImage:imageRef]];

CGImageRelease(imageRef);