构建用于@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即为所求

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容