IOS开发中@2x图片等适应不同分辨率手机

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

在项目中还保存中[email protected]的图片,此图为了只适应960*640的分辨率手机

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

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

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

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

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

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‘];

在项目中还保存中[email protected]的图片,此图为了只适应960*640的分辨率手机

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

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

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

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

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

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大图!

时间: 2024-08-07 04:43:40

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

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

iOS开发中 再用到照片的时候  或多或少遇到过这样的问题  就是我想用的照片有横着拍的有竖着排的  所以导致我选取图片后的效果也横七竖八的   显示效果不好 比如: 图中红圈选中的图片选取的是横着拍的图片 所以显示的头像也是横着的 显示效果不佳 问题描述: 使用过iPhone或者iPad的朋友在拍照时不知是否遇到过这样的问题,将设备中的照片导出到Windows上时,经常发现导出的照片方向会有问题,要么横着,要么颠倒着,需要旋转才适合观看.而如果直接在这些设备上浏览时,照片会始终显示正确的方向,

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

在ios开发中,我们一般都是在textfield或者textView中输入文字.当我们需要插入图片的时候其实也是很简单的 我们需要利用的textfield,textView的属性化文本,将图片以附件的形式插入 步骤如下:(以textView为了,oc中也是一样的) 创建附件,同时设置好textView的字体大小(或者在storyBoard中设置) 1 //设置字体 2 textView.font = UIFont.systemFontOfSize(24) 3 //创建附件 4 let attac

iOS开发中一些有用的小代码

1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&qu

iOS开发中的压缩以及解压

事实上,在iOS开发中,压缩与解压,我都是采用第三方框架SSZipArchive实现的 gitHub地址:   https://github.com/ZipArchive/ZipArchive 上面有详细的使用方法 因为ZipArchive不支持ARC,所以如果你的工程开启了ARC,那么就需要对ZipArchive设置一下.在ZipArchive.mm编译选项中,增加-fno-objc-arc即可. 最后,需要为工程链接libz.dylib动态链接库. 使用示范(压缩): // 获得mainBu

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

使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库,多个应用程序共享内存中得同一份库文件,节省资源 3使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的. 从1可以得出,将整个应用程序分模块,团队合作,进行分工,影响比较小. 等其他好处, 从2可以看出,其实动态库应该叫共享库,那么从这个意义上来说,苹果禁止iOS开

iOS开发中使用宏定义提高开发效率

iOS开发中使用宏定义提高开发效率 (2013-07-10 10:47:33) 转载▼ iOS开发中,巧妙的使用宏定义,可以提高开发效率,本篇简单介绍一下宏的定义,设置,应用,并在未来实践中不断追加一些常用的宏定义. 调试Log iPhone应用程序开发调试的时候,在代码中加入NSLog的暴力调试方法是很频繁的,但是在release的时候要删除这些调试代码,那工作量是烦躁,这样的情况下,试用宏就会显得非常的方便. 看下面的例子: #ifdef DEBUG #define LOG(...) NSL

全面理解iOS开发中的Scroll View

转自:http://mobile.51cto.com/hot-430409.htm 可能你很难相信,UIScrollView和一个标准的UIView差异并不大,scroll view确实会多一些方法,但这些方法只是UIView一些属性的表面而已.因此,要想弄懂UIScrollView是怎么工作之前,你需要了解 UIView,特别是视图渲染过程的两步. 光栅化和组合 渲染过程的第一部分是众所周知的光栅化,光栅化简单的说就是产生一组绘图指令并且生成一张图片.比如绘制一个圆角矩形.带图片.标题居中的U

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

iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所

IOS开发中的UITableView与UITableViewCell

UITableView用来以表格的形式显示数据.关于UITableView,我们应该注意: (1)UITableView用来显示表格的可见部分,UITableViewCell用来显示表格的一行. (2)UITableView并不负责存储表格中的数据,而是仅仅存储足够的数据使得可以画出当前可见部分. (3)UITableView从UITableViewDelegate协议获取配置信息,从UITableViewDataSource协议获得数据信息. (4)所有的UITableView实现时实际上只有