兼容 iOS Retina(视网膜显示) 的程序
首先我们需要明确一点,iOS设备上图片兼容retina的问题最初是由于iPhone4的分辨率由iPhone3的320X480提升到了640X960所产生。
为了让iPhone4能够兼容iPhone3上开发的APP,苹果设计了逻辑分辨率单位Point。在 iPhone3 上 1个 Point 相当于 1个pixel ; 而 iPhone4 上1个 point 就相当于4个 pixel。因此所有的iPhone,iTouch都可以认为拥有320X480的逻辑分辨率,这保证了所有的APP不经过修改也能正常的在高分辨率的设备上运行,只是原来的图片会在拉伸后显示在设备上,会影响美观。
开发人员在开发过程中如何避免此种情况发生呢?
1.UI静态加载图片的情况下
作为开发人员的我们需要美术人员提供两套图片,一套适应320X480分辨率,另一套适应640X960分辨率。
比如需要使名字为“background.png”,大小为220X350的图片兼容retina,那么就需要美术人员提供一张440X700的图片,我们将其名称命名为“background@2x.png”之后添加到项目中即可。如此,我们直接使用程序中原来的代码就可以达到目的。
[UIImage imageNamed:@"background.png"];
2.如果APP中使用从网络异步获取的图片来显示或者是游戏中动态生成图片后显示,则需要在代码中加入对不同设备、屏幕分辨率的判断来获取或者生成不同大小的图片
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2)
{
// 获取或者加载高清图片
}
else
{
// 获取或者加载普通图片
}
兼容 iOS Retina(视网膜显示) 的程序的更多相关文章
- IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)
IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...
- iOS 打开本地 其他应用程序(URL Types)
iOS 打开本地其他应用程序(URL Types) /*前言废话:Xcode是神奇的,是我所见到的编译器中最为神奇的,如:它可以同时运行两个甚至更多Project到我们模拟器上,可以同时使用一个模拟器 ...
- 兼容iOS 10 资料整理笔记
原文链接:http://www.jianshu.com/p/0cc7aad638d9 1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化 ...
- iOS开发 - 兼容iOS 10
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...
- storyboard在ios模拟器无法显示的问题
一.问题描述 1.在原有项目新建一个名称为test的storyboard类型的文件. 2.test.storyboard添加View Controller,并设置View Controller下Vie ...
- 【转】兼容iOS 10 资料整理
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...
- 兼容iOS 10 资料整理
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...
- 兼容iOS 10 资料整理笔记-b
原文链接:http://www.jianshu.com/p/0cc7aad638d9 1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化 ...
- 关于新版本,iOS10的相关内容,兼容iOS 10 资料整理笔记
1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...
随机推荐
- IIS 日志分析
查看哪个IP访问量大,访问了什么地址,大可以看到攻击者IP: select c-ip,count(c-ip) AS allcount,cs-uri-stem,cs-uri-query,cs(User- ...
- WCF安全:通过 扩展实现用户名密码认证
在webSservice时代,可以通过SOAPHEADER的方式很容易将用户名.密码附加到SOAP header消息头上,用户客户端对调用客户端身份的验证.在WCF 时代,也可以通过Operation ...
- Hbase 学习(七) rowkey设计
一直以来对rowkey的设计都比较迷茫,<hbase权威指南>倒是给出了个还算靠谱的例子. 下面这个例子有点儿像帖子表结构,它的rowkey设计是这样的,可以简单的理解为,什么人在什么时间 ...
- nodejs开发——require与exports的使用
nodejs开发——require与exports的使用 另一片文章总结:http://www.cnblogs.com/hfultrastrong/p/8036682.html require req ...
- curl_multi_select解决curl_multi网页假死问题
curl_multi可以批处理事务,给网页编程带来很大的方便.不过在使用curl_multi的过程中,我们会遇到一个比较头疼的问题,那就是当并发处理的事务数量过多的时候,就会出现CPU过高,网页假死的 ...
- 基于html5 canvas 的客户端异步上传图片的插件,支持客户端压缩图片尺寸
/** * Created by xx on 15-05-28. * 基于html5 canvas 的客户端异步上传画片的插件 * 在实际应用中,常常要用于上传图片的功能.在现在越来越多的手机weba ...
- 使用python(command line)出现的ImportError: No module named 'xxx'问题
当你在python.exe直接输入 import test 时报出importerror: no module named 'test' ,这个错误时由于路径问题,sys并没有找到你输入的这个文件 解 ...
- Sublime运行Matlab
使用Sublime来作为Matlab的编辑器.Sublime编辑+Matlab命令行(terminal)运行的开发环境搭建. 前期准备 Matlab 2014a (Windows或Linux平台,这里 ...
- MapReduce 图解流程超详细解答(1)-【map阶段】
转自:http://www.open-open.com/lib/view/open1453097241308.html 在MapReduce中,一个YARN 应用被称作一个job, MapReduc ...
- mac下配置android环境变量
下面我将一下mac环境下的配置步骤: 1.在本地目录(home directory)中创建文件.bash_profile2.在文件中写入以下内容:export PATH=${PATH}:/Users/ ...