iPad Retina显示屏的XCode坐标

5
我刚刚注意到一个有趣的事情,当我尝试为新的iPad Retina显示器更新我的应用程序时,Interface Builder中的每个坐标仍然基于原始的1024x768分辨率。
我的意思是,如果我有一个2048x1536的图像要适合整个屏幕显示,我需要将其大小设置为1024x768而不是2048x1536。
我只是好奇这是否是故意的?我能否在Interface Builder中切换坐标系统以针对Retina?这有点烦人,因为我的一些图形在宽度或高度方面与其原始图形不完全是2倍。我似乎无法设置1/2坐标数,例如1.5,它只能在Interface Builder中为1或2。
我应该只在代码中进行界面设计,忘记Interface Builder吗?保持我的图形在两个方向上都恰好是2倍?还是只是接受现状?
2个回答

4

iOS界面是基于点而不是像素的。图像必须是原始尺寸的2倍。

在iOS中,您在绘图代码中指定的坐标和底层设备的像素之间有一个区别。当使用原生绘图技术(如Quartz、UIKit和Core Animation)时,您使用逻辑坐标空间指定坐标值,该空间以点为单位测量距离。这个逻辑坐标系统与系统框架用于管理屏幕上的像素的设备坐标空间是分离的。系统会自动将逻辑坐标空间中的点映射到设备坐标空间中的像素,但这种映射并不总是一对一的。这种行为导致一个重要的事实,您应该始终记住:
一个点不一定对应于屏幕上的一个像素。使用点(和逻辑坐标系统)的目的是提供一致的输出大小,这是与设备无关的。点的实际大小是不相关的。点的目标是提供一种相对一致的比例,您可以在代码中使用它来指定视图和渲染内容的大小和位置。如何将点实际映射到像素是由系统框架处理的细节。例如,在具有高分辨率屏幕的设备上,宽度为1点的线可能实际上在屏幕上变成2个像素宽。结果是,如果在两个类似的设备上绘制相同的内容,其中只有一个具有高分辨率屏幕,则内容在两个设备上看起来大约相同大小。
在您自己的绘图代码中,大多数情况下使用点,但有时您可能需要知道如何将点映射到像素。例如,在高分辨率屏幕上,您可能希望使用额外的像素提供内容的额外细节,或者您可能只是想微调内容的位置或大小。在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

然而,当您处理内联自定义图形时,这并没有什么帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接