关于不同设备下载同一张图片适配问题

背景

对于一些比较常用的按钮或者其他控件,我们都希望它能隔断时间有所变化,例如一个常用的TabBar,上面有五个按钮,我希望这五个按钮不是写死的(有默认图片),而是能够根据后台所设定的图片进行设置,从而让用户感受到新颖的感觉。所以我们可能会根据服务器的所提供的链接去下载对应的图片,用作TabBarItem的图片。但是有个问题是在ios上对于不同设备,所需要的图片大小也不一样。有@1x,@2x,@3x,如何解决下载下来后能适配到不同设备上。

预判设备

获取设备的放大倍数。

float scaleX;

if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){
    if ([[UIScreen mainScreen] scale]==1.0) {
        scaleX=1;
    }
    if ([[UIScreen mainScreen] scale]==2.0) {
        scaleX=2;
    }
    if ([[UIScreen mainScreen] scale]==3.0) {
        scaleX=3;
    }
}

方案

针对不同设备下载一张图片。服务器上有三张图片,分别为@1x=30x30、@2x=60x60、@3x=90x90。有一个问题是,通过网络下载下来的图片是一个变量同时并没有以@2x、@3x的形式来命名,可能有人说可以把变量保存成文件然后重新命名该图片,这样的做法比较麻烦!另外一种方法是通过UIImage自带的方法达到适配效果。

//通过url进行下载回来的图片
UIImage *image = .......
//根据倍数进行缩放
image=[UIImage imageWithCGImage:[image CGImage] scale:scaleX orientation:UIImageOrientationUp];

知识说明:一张图像的实际的尺寸(像素)等于image.size乘以image.scale。假设我下载了一张90x90(pixel)的图片,然后我发现scaleX等于3.0,则输出一张30x30(points)的图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值