2012-04-09 63 views
5

我刚刚注意到一个有趣的事情,同时试图更新我的应用程序的新iPad Retina显示器,Interface Builder中的每个坐标仍然基于原始的1024x768分辨率。iPad Retina显示器的XCode坐标

我的意思是,如果我有一个2048x1536图像使其适合显示器上的整个屏幕,我需要将其大小设置为1024x768而不是2048x1536。

我只是好奇这是故意吗?我可以在界面生成器中将坐标系切换为Retina专用的吗?这有点令人讨厌,因为我的一些图形在原稿的宽度或高度上都不是2倍。我似乎无法设置1/2坐标数字,例如1.5,它可以是Interface Builder中的1或2。

我应该只是在代码中做我的界面设计,而忘记界面构建器?在两个方向上保持我的图形精确到2倍?或者只是和它一起生活?

回答

4

iOS上的界面基于点而不是像素。图像的大小是原件的两倍。

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

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

在您自己的绘图代码中,大部分时间使用点,但有 是您可能需要知道点如何映射到像素的时间。 例如,在高分辨率屏幕上,您可能希望使用额外的像素来提供内容中的额外细节,或者您可能只想以微妙的方式调整内容的位置或大小。 在iOS 4及更高版本中,UIScreen,UIView,UIImage和CALayer类 公开了一个比例因子,该比例因子告诉您点 与该特定对象的像素之间的关系。在iOS 4之前,此比例因子 被假定为1.0,但在iOS 4及更高版本中,它可能是1.0或 2.0,具体取决于底层设备的分辨率。未来,其他比例因子也是可能的。

http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html

1

这是故意对苹果的一部分,定位控制和文本时,使你的代码相对独立的实际屏幕分辨率。但是,正如您所指出的,它可以使设备的最大分辨率显示图形更复杂一些。

对于iPhone,屏幕始终为480 x 320点。对于iPad,它的分辨率为1024 x 768.如果您的图形适合设备缩放,则影响并不难在代码中处理。我不是一名平面设计师,对我来说,必须提供多套图标,启动图像等来解决高分辨率问题,这对我来说已经证明有点具有挑战性。

对于某些图像类型,最大限度地减少对你的代码的影响

苹果公司的命名标准:

https://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html

这并不能帮助你,当你正在处理自定义图形内联,但是。