开发中,例如: nanshanImage.image=[UIImage imageNamed:@'index_pic.png'];

在项目中还保存中index_pic@2x.png的图片,此图为了只适应960*640的分辨率手机

注意:适应Iphone5的相关图片尺寸,也要加@2x.png。比如欢迎界面:Default-568h@2x.png;这个才能匹配上。

而index_pic.png是适应640*320的手机,但是在代码中必须写成[UIImage imageNamed:@'index_pic.png'];这样系统自动会根据不同分辨率手机决定是否调用index_pic@2x.png还是index_pic.png,会自动根据分辨率来匹配用哪张图。

可是如果写成[UIImage imageNamed:@'index_pic@2x.png'];那么系统无法自动判断,根据640*320分辨率来调用index_pic.png图片,系统只会将index_pic@2x.png这一张图当做某控件的图片,不会自动寻找匹配。

因此,开发中[UIImage imageNamed:@'index_pic.png'];里面的图片都是用小分辨率格式名的图片,这样会自动适应大分辨率图片,直接调用。

UIImage类处理了所有需要加载高分辨率图片到应用中的工作。当创建一个新的image对象后,只要以同样的名称来同时请求图片的标准版和高分辨率版即可。例如,如果有两张图片文件,名为Button.png和Button@2x.png,只要用以下代码请求图片即可:

UIImage* anImage = [UIImage imageNamed:@'Button'];

注意,在IOS4及以后的版本,可以省略文件扩展名而只提供图片名称即可。

在高分辨率显示屏下, imageNamed:, imageWithContentsOfFile:, 和initWithContentsOfFile: 方法自动查找具有@2x名称的图片(注意:如果@2x.png图片与.png图片必须放在项目同一包下,才能自动查找)。如果找到,则会加载该图片。如果没有提供给定图片的高分辨率版本,image对象仍会加载标准版的图片资源,并在绘画过程中将其缩放。如果有提供给定图片的高分辨率版本,但是没有标准版的图片,在标准版显示屏下不会加载高清的图片。

说明:1,Create folder references for any added folders

创建引入的是蓝色的文件夹结构,物理路径。 利用imageWithContentsOfFile获取图片,@2x.png与.png必须在同一蓝色目录下。

2,Create groups for any added folders

导入文件的时候会是逻辑结构,而不是物理结构,目录结构图标如下,黄色的文件夹结构,和构建的Group是一样的,@2x.png与.png可在黄色不同的文件夹下(因为没有物理路径,引用的图片路径其实在同一路径下)。

注意:xib中选择图片做背景时,也是一样的原理!也是选择不带@2x的,这样会自带根据分辨率匹配是否使用小图还是@2x大图!

开发中,例如: nanshanImage.image=[UIImage imageNamed:@'index_pic.png'];

在项目中还保存中index_pic@2x.png的图片,此图为了只适应960*640的分辨率手机

注意:适应Iphone5的相关图片尺寸,也要加@2x.png。比如欢迎界面:Default-568h@2x.png;这个才能匹配上。

而index_pic.png是适应640*320的手机,但是在代码中必须写成[UIImage imageNamed:@'index_pic.png'];这样系统自动会根据不同分辨率手机决定是否调用index_pic@2x.png还是index_pic.png,会自动根据分辨率来匹配用哪张图。

可是如果写成[UIImage imageNamed:@'index_pic@2x.png'];那么系统无法自动判断,根据640*320分辨率来调用index_pic.png图片,系统只会将index_pic@2x.png这一张图当做某控件的图片,不会自动寻找匹配。

因此,开发中[UIImage imageNamed:@'index_pic.png'];里面的图片都是用小分辨率格式名的图片,这样会自动适应大分辨率图片,直接调用。

UIImage类处理了所有需要加载高分辨率图片到应用中的工作。当创建一个新的image对象后,只要以同样的名称来同时请求图片的标准版和高分辨率版即可。例如,如果有两张图片文件,名为Button.png和Button@2x.png,只要用以下代码请求图片即可:

UIImage* anImage = [UIImage imageNamed:@'Button'];

注意,在IOS4及以后的版本,可以省略文件扩展名而只提供图片名称即可。

在高分辨率显示屏下, imageNamed:, imageWithContentsOfFile:, 和initWithContentsOfFile: 方法自动查找具有@2x名称的图片(注意:如果@2x.png图片与.png图片必须放在项目同一包下,才能自动查找)。如果找到,则会加载该图片。如果没有提供给定图片的高分辨率版本,image对象仍会加载标准版的图片资源,并在绘画过程中将其缩放。如果有提供给定图片的高分辨率版本,但是没有标准版的图片,在标准版显示屏下不会加载高清的图片。

说明:1,Create folder references for any added folders

创建引入的是蓝色的文件夹结构,物理路径。 利用imageWithContentsOfFile获取图片,@2x.png与.png必须在同一蓝色目录下。

2,Create groups for any added folders

导入文件的时候会是逻辑结构,而不是物理结构,目录结构图标如下,黄色的文件夹结构,和构建的Group是一样的,@2x.png与.png可在黄色不同的文件夹下(因为没有物理路径,引用的图片路径其实在同一路径下)。

注意:xib中选择图片做背景时,也是一样的原理!也是选择不带@2x的,这样会自带根据分辨率匹配是否使用小图还是@2x大图!

IOS开发中@2x图片等适应不同分辨率手机的更多相关文章

  1. iOS开发中图片方向的获取与更改

    iOS开发中 再用到照片的时候  或多或少遇到过这样的问题  就是我想用的照片有横着拍的有竖着排的  所以导致我选取图片后的效果也横七竖八的   显示效果不好 比如: 图中红圈选中的图片选取的是横着拍 ...

  2. 【Swift】图文混排,ios开发中在textfield或textView中插入图片

    在ios开发中,我们一般都是在textfield或者textView中输入文字.当我们需要插入图片的时候其实也是很简单的 我们需要利用的textfield,textView的属性化文本,将图片以附件的 ...

  3. iOS开发中关于UIImage的知识点总结

    UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...

  4. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  5. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  6. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  7. IOS开发中设置控件内容对齐方式时容易混淆的几个属性

    IOS开发中四个容易混淆的属性: 1. textAligment : 文字的水平方向的对齐方式 1> 取值 NSTextAlignmentLeft      = 0,    // 左对齐 NST ...

  8. 【转】IOS开发中图片资源使用png还是jpg格式

    对于iOS本地应用程序来说最简单的答案就是始终使用PNG,除非你有非常非常好的理由不用它. 当iOS应用构建的时候,Xcode会通过一种方式优化.png文件而不会优化其它文件格式.它优化得相当的好 他 ...

  9. 多线程在iOS开发中的应用

    多线程基本概念 01 进程 进程是指在系统中正在运行的一个应用程序.每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 02 线程 2-1 基本概念 1个进程要想执行任务,必须得有线程 ...

随机推荐

  1. Java多线程与并发库高级应用-同步集合

    ArrayBlockingQueue LinkedBlockingQueue 数组是连续的一片内存 链表是不连续的一片内存  传统方式下用Collections工具类提供的synchronizedCo ...

  2. js-FCC算法-Symmetric Difference

    创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组. 给出两个集合 (如集合 A = {1, 2, 3} 和集合 B = {2 ...

  3. 【BZOJ-4423】Bytehattan 并查集 + 平面图转对偶图

    4423: [AMPPZ2013]Bytehattan Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 144  Solved: 103[Submit][ ...

  4. ES5/ES6的区别研究(ECMAScript)

    我所理解的概念应该是语法的区别和特性的区别 这里是ECMAScript的解析http://baike.baidu.com/item/ECMAScript 参考: (ES6)http://es6.rua ...

  5. hdu 5229 找规律

    假设选择了字符串a和b: 假设两人都按照最聪明的策略,那么观察一下可以找出规律:当a和b的字符串长度之和为奇数的时候zcc会败. 另外当a==b的时候zcc也会败(当时做的时候忘了这个了T^T) 接下 ...

  6. Guava集合-BiMap

    在本篇文章中我们将介绍Guava集合中的BiMap这个接口. com.google.common.collect Interface BiMap<K,V> BiMap接口的父接口是Map& ...

  7. python中join和split函数

    一个是分割,一个是连接. 惯例,先看内部帮助文档 Help on method_descriptor: join(...) S.join(iterable) -> string Return a ...

  8. BZOJ3282: Tree

    传送门 又是权限题= =,过了NOIp我就要去当一只权限狗! LCT裸题,get到了两个小姿势. 1.LCA操作应该在access中随时updata 2.Link操作可以更简单 void Link(i ...

  9. su su- sudo的区别

    linux su命令参数及用法详解(linux切换用户命令) su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码   linux su 命令 建议大家切换用户的时候 使用 su ...

  10. 获取List集合中最大值的方法

    public static void main(String args[])      {        //Double[] num = { 45.1,45.2 };              Li ...