ios4支持高分辨率的一些总结

来源:低调,爆发! 责任编辑:栏目编辑 发表时间:2013-07-01 13:24 点击:
iPhone4采用了一个叫做retina的屏幕,尺寸和老的iphone一样大,但是分辨率提高了4倍,看起高清的图来,爽太多了,根本看不到像素点.

对于老的app来说,在iphone4中运行,会自动用4个像素替代原来的一个像素,这样就不用更改代码,使得老app可以自然的在iphone4中运行,但是UI的效果会有些蒙蒙的,不是最佳的效果,要达到最佳,必须为原来的图片资源,重新设计一份640*960的高清版本,这样才能在iphone4内达到最佳的UI效果~

下面就来简单总结下在ios4中怎么样使用高清图,首先要了解一些概念:

Points Versus Pixels:
When using native drawing technologies such as Quartz, UIKit, and Core Animation, you specify coordinate values using a logical coordinate space, which measures distances in points. This logical coordinate system is decoupled from the device coordinate space used by the system frameworks to manage the pixels on the screen.

一般程序中使用到的尺寸都是以point来计算的.

在老的iphone中,point和pixel基本没怎么去分辨,因为都是1:1的,都是320*480.

但是在iphone4或以后的设备中,这个不再是1:1的关系,对于iphone4的retina屏幕来说,1point=2pixels,屏幕的最大point的size仍是320*480.

接下来就说下怎么样使用高清图:
假设现在有两附图Default.png(320*480)和Default@2x.png(640*960)

UIImage *image1 = [UIImage imageNamed:@"Default.png"];
UIImage *image2 = [UIImage imageNamed:@"Default"];

上面两行代码,在ios4中,都会自动根据你的手机分辨率,来自动匹配图片:

如果是iphone 3G和3GS,调用上面的结果,image1和image2得到的都是Default.png(320*480)这张图片,在查看image的size,你会发现是320*480的(按point来计),再看image的scale这个property是1.0,表示实际的1个piont对应了一个像素点,所以图片的实际像素是(320*scale)*(480*scale)=320*480.

如果是iphone4,返回的结果两个image都是Default@2x.png(640*960)这张图,再次查看image的size,你会发现仍然是320*480(points),但是scale是2.0,表示1个point对应图片上面的两个像素点,所以图片的实际像素是(320*scale)*(480*scale)=640*960.

所以,只用给同名的高清图加上@2x这个后缀,用UIImage的imageNamed这个函数调用图片名(未带@2x的),就会自动帮你调用合适的图片,使用起来很方便.

你也可以使用,UIImage的initWithContentsOfFile:(需要图片的完整路径)函数来load图片,但是这个不会帮你自动区分图片,你需要自己根据手机的分辨率来指定调用Default.png还是Default@2x.png.


可以做如下一些测试,能够加深印象:
准备Default.png(320*480),Default@2x.png(640*960),DefaultCopy.png(320*480)和Default_Copy@2x.png(640*960)四张图,分别用imageNamed:和initWithContentsOfFile:来调用(直接调用各个文件名:Default.png,Default@2x.png, DefaultCopy.png, Default_Copy@2x.png),然后分别在iphone 3G和iphone 4上面显示看效果,顺便输出image的size和scale来比较.会对这个问题有更渗入的理解.

举个例子:
上面提到过在iphone4上面用imageNamed函数调Default.png,返回的是Default@2x.png(640*960)这张图,看起来就会很清楚.

但是如果调用DefaultCopy.png,因为它找不到DefaultCopy@2x.png这张高清图,只能用原来小size的图,所以返回还是DefaultCopy.png(320*480),size是320*480,但是scale是1.0,实际图像的像素就是(320*scale)*(480*scale)=320*480,显示效果差,因为图片像素只有高清的1/4.

以上都是本人的一些简单的总结,难免会有疏漏不正确,多多包涵.


本文出自 “低调,爆发!” 博客,请务必保留此出处http://life173.blog.51cto.com/2035365/384735

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • UITableView一些方法
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • iphone(object-c)内存管理(1)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1