关于不同设备下载同一张图片适配问题
2015-06-24 10:15
302 查看
背景
对于一些比较常用的按钮或者其他控件,我们都希望它能隔断时间有所变化,例如一个常用的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)的图片。
相关文章推荐
- iOS 模拟终端控件
- SQL with(unlock)与with(readpast) (转)
- 如何写一个简单的手写识别算法?
- 学校网站制作该从哪几方面去思考去制作
- ajax是否能跨域请求,解决的办法
- 用注解方式实现springMVC
- 【性能诊断】九、并发场景的性能分析(windbg案例,Fist Chance Exception/Crash dump)
- Ubuntu 14.10 下grep命令详解
- 浅谈参加SEO培训是否是必要的
- sdk callback mechnism
- opencv中的vs框架中的Blob Tracking Tests的中文注释。
- 用 CallerMemberName Attribute 和 EqualityComparer 统一处理类的属性值变化
- 修改Active Directory域控制器计算机名称
- 6月21日全球域名注册商(国际域名)保有量及市场份额
- listview加载性能优化及有多种listitem布局处理方式
- SAP在物流工作中的应用之学习笔记
- NSURLConnection文件上传
- 分享一个自己写的基于TP的关系模型(2)
- 一个丝滑的全屏滑动返回手势
- 用户掩码umask