构建用于@2x,@3x方式下的UIImage

** iOS开发:**

第一个例子:

使用[UIImage imageWithContentsOfFile:]创建UIImage,支持@2x,@3x的显示分辨率

如果手工创建一个UImage,
UIImage的内容使用 [UIImage imageWithContentsOfFile:fileName] 方式加载
图片的宽高为:90x90

但是

这张图片其实是用于一个30x30的UIImage的@3x模式的显示;

那么应该如何设置呢?

方法是:

让fileName中的文件结尾包含:@3x的后缀即可

第二个例子:

创建一个用于二倍图显示UIImage

如果使用fileName的方式,只要让文件名包含@2x,@3x即可;
但是如果不是从fileName来读取图片呢?

这就要利用UIImage的scale属性了。

下面的例子中,构建了一个像素为 70x70的UIImage,但是要按照35x35 imageSize 来显示这个UIImage,也就是说要让这个70x70的UIImage显示为 35x35 的二倍图显示方式;

有一种方法是利用UIImageView的contentMode来实现。
但有些场景下,这个方式可能并不好用,例如为UINavigtionItem设置leftBarButton的图片。

UIImage *cachedImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:@"urlKeyString"];

CGImageRef imgRef = [cachedImage resizeImageWithNewSize:CGSizeMake(70,scaleHeight)].CGImage;

UIImage *imgOk = [UIImage imageWithCGImage:imgRef scale:2 orientation:UIImageOrientationUp];

imgOk即为所求

你可能感兴趣的:(构建用于@2x,@3x方式下的UIImage)