2012-07-05 108 views
1

我试图建立我的视网膜分辨率(2048x1536)但用:如何为Retina设置Xcode项目?

NSLog(@"resolution from xcode %f %f", [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); 

我总是1024x768分辨率。任何想法如何设置视网膜分辨率?

+0

非常基本,但我想很多初学者每天都会遇到这种困惑。 – 2012-07-05 11:20:05

回答

4

你得到的是点数值,而不是像素值。 从Apple's docs

点对战像素

在iOS中有你在你的绘制代码指定坐标和底层设备的像素之间的区别。使用Quartz,UIKit和Core Animation等原生绘图技术时,可以使用逻辑坐标空间指定坐标值,逻辑坐标空间用于测量以点为单位的距离。该逻辑坐标系与系统框架使用的设备坐标空间分离,以管理屏幕上的像素。系统会自动将逻辑坐标空间中的点映射到设备坐标空间中的像素,但该映射并不总是一对一。这种行为导致一个重要的事实,你应该永远记住:

一点不一定对应于屏幕上的一个像素。

使用点(和逻辑坐标系)的目的是提供与设备无关的一致输出大小。点的实际大小是无关紧要的。点的目标是提供一个相对一致的尺度,您可以在代码中使用该尺度来指定视图和渲染内容的大小和位置。点如何实际映射到像素是由系统框架处理的细节。例如,在具有高分辨率屏幕的设备上,宽度为一点的线条实际上可能会在屏幕上产生两个像素宽的线条。结果是,如果您在两台类似的设备上绘制相同的内容,并且其中只有一台具有高分辨率屏幕,则两台设备上的内容似乎大小相同。

+0

了解..所以根据苹果文档,我如何绘制一个像素大小的“点”。如果你知道我的意思。 – sbtgE 2012-07-05 11:12:44

+0

如果你想绘制一个像素,你将不得不在画面设备上绘制0.5点。您可以使用[[UIScreen mainScreen]比例]检查设备是否为视网膜。] – 2012-07-05 11:22:49