45

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

UIViewContentModeScaleToFill,
UIViewContentModeScaleAspectFit,
UIViewContentModeScaleAspectFill,
UIViewContentModeRedraw

在 autoresize 掩码中设置什么?他们的行为如何?

4

7 回答 7

90

请尝试此代码,希望它对您有用。

设置UIImageView contentMode如下UIViewContentModeScaleAspectFill

imageView.contentMode = UIViewContentModeScaleAspectFill;

设置 UIImageView 的 autoresizingMask 如下:

imageView.autoresizingMask =   
    ( UIViewAutoresizingFlexibleBottomMargin
    | UIViewAutoresizingFlexibleHeight
    | UIViewAutoresizingFlexibleLeftMargin
    | UIViewAutoresizingFlexibleRightMargin
    | UIViewAutoresizingFlexibleTopMargin
    | UIViewAutoresizingFlexibleWidth );
于 2013-01-03T06:56:25.170 回答
3

你只需要这两行:

imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.layer.clipsToBounds = YES; // Must do this or else image will overflow
于 2017-07-27T06:16:57.853 回答
2

这里有一个快速的解决方案:

let imageView = UIImageView(image: UIImage(named: "backgroundImage"))
imageView.frame = tableView.frame
imageView.contentMode = .ScaleAspectFill
tableView.backgroundView = imageView
于 2015-05-13T09:33:58.280 回答
1

在swift中,您还可以设置内容模式

var newImgThumb : UIImageView
newImgThumb = UIImageView(frame:CGRectMake(0, 0, 100, 70))
newImgThumb.contentMode = .ScaleAspectFit
于 2014-11-14T05:56:49.880 回答
1

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

 yourimage.contentMode=UIViewContentModeScaleAspectFit;

让我知道它是否有效!

快乐编码。

于 2013-01-03T06:29:12.320 回答
1

值得注意的是,swift 3 发生了如下变化

. ScaleAspectFitscaleAspectFit

. ScaleAspectFill至 。scaleAspectFill

于 2016-10-23T00:15:11.667 回答
0

希望这对你有帮助

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

image = [UIImage imageWithCGImage:imageRef]];

CGImageRelease(imageRef);
于 2013-01-03T06:50:45.303 回答