1

我正在尝试使用视网膜分辨率构建我的应用程序,(2048x1536)但使用:

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

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

4

1 回答 1

4

你得到的是以点为单位的价值,而不是像素。来自Apple 的文档

点与像素

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

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

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

于 2012-07-05T10:38:26.933 回答