在iOS中,点 在屏幕和绘图中指定位置。它们是提供描述绘图操作的位置和范围的测量单位。点与物理世界的测量单位或特定屏幕硬件没有固定关系。它们使您能够独立于所使用的设备来描述位置。
点不是像素。像素 是可在屏幕上寻址的屏幕组件,并直接与特定的设备硬件有关系。每个像素可以单独设置为一些亮度和颜色值。相反,点指的是逻辑的坐标空间。
例如,iPhone家族的所有成员在竖屏时都呈现320点的宽度。(译者注:这只是5s及以前的设备,现在已经有多种宽度) 这些点对应于较旧单元上的320像素宽和较新的基于视网膜的模型上的640像素宽。统一的坐标系统适用于所有iPhone设备,无论您是使用较新的Retina模型还是较旧的较低像素密度单位。
如图2-1所示,无论像素密度如何,位置(160.0,240.0)都处于纵向方向的3.5英寸iPhone或iPod触摸屏的中央。同样的点位于4英寸Retina的iPhone和iPod touch上的中心位置。这些较新设备的自然中心是(160.0,284.0)。
在横向方向,同一点位于iPhone屏幕的左下角。在较大的iPad屏幕上,这显示在屏幕的左上角。
图2-1显示在各种目标设备上的逻辑点(160.0,240.0)。顶行:原始iPhone,3.5英寸Retina iPhone,4英寸Retina iPhone。中间行:原始iPhone,3.5英寸Retina iPhone,4英寸Retina iPhone。 底行:纵向(Retina)iPad,横向(Retina)iPad。
Scale
UIScreen
类提供了一个名为scale
的属性。该属性表示显示器的像素密度与其点系统之间的关系。屏幕的scale用于将以点衡量的视图系统的逻辑坐标空间转换为物理像素坐标。Retina显示器使用2.0的比例(译者注:最新设备还有3.0的比例),非Retina显示器使用1.0的比例。您可以通过检查主屏幕的比例来测试是否是Retina设备:
1 | - (BOOL) hasRetinaDisplay |
译者注:这种判断已经不再准确,现在的5.5英寸屏幕的scale为3.0,也属于视网膜屏.
主屏幕总是指设备的板载显示器。其他屏幕可以通过AirPlay和通过Apple的连接器电缆连接。每个屏幕提供availableModes
属性。这提供了一个从最低到最高分辨率排序的分辨率对象数组。
许多屏幕支持多种模式。例如,VGA显示器可能提供多达六个或更多的不同的分辨率。支持的分辨率数量因硬件而异。将始终至少有一个分辨率可用,但是您应该能够在有更多选择的时候向用户提供选择。
UIScreen
类还提供了两个有用的显示大小属性。bounds
属性返回屏幕的边界矩形,以点为单位。这将为您提供屏幕的完整大小,而不管任何屏幕元素(如状态栏,导航栏或标签栏)。 applicationFrame
属性也以点为单位。它排除了状态栏(如果可见)的尺寸,为应用程序的初始窗口大小提供frame。
iOS设备
表2-1总结了iOS系列设备,列出了每个系列的可寻址坐标空间。虽然有五个不同的显示系列可以使用,但此时仅遇到三个逻辑空间。(苹果可能会在未来引入新的几何形状尺寸。)(译者注:苹果已经引入了新的设备屏幕尺寸)这将设计分为三组:
- 3.5英寸iPhone类设备(320.0x480.0点)
- 4英寸iPhone类设备(320.0乘568.0点)
- iPad设备 (768.0 by 1024.0 points)
Family | Devices | Logical Space | Scale | Physical |
---|---|---|---|---|
3.5-inch iPhone family | 3GS and earlier; iPod touch third generation and earlier | 320.0 by 480.0 points (portrait) | 1.0 | 320 by 480 pixels (portrait) |
3.5-inch iPhone with Retina display family | 4 and 4S; iPod touch fourth generation | 320.0 by 480.0 points (portrait) | 2.0 | 640 by 960 pixels (portrait) |
4-inch iPhone family with Retina display | iPhone 5 and later; iPod touch fifth generation and later | 320.0 by 568.0 points (portrait) | 2.0 | 640 by 1136 pixels (portrait) |
iPad family | iPad 2 and earlier; iPad mini first generation | 768.0 by 1024.0 points (portrait) | 1.0 | 768 by 1024 pixels (portrait) |
iPad with Retina display family | Third-generation iPad and later; the rumored but yet- unannounced iPad mini Retina | 768.0 by 1024.0 points (portrait) | 2.0 | 1536 by 2048 pixels (portrait) |
译者注:截止译者翻译本文时,苹果已经增加的iOS设备屏幕尺寸还有4.7英寸Retina iphone系列,5.5英寸Retina iphone系列,7.9英寸Retina iPad Mini系列,9.7英寸Retina iPad Air/Pro系列,以及12.9英寸iPad Pro
译者补充:
Family | Devices | Logical Space | Scale | Physical |
---|---|---|---|---|
4.7-inch iPhone family with Retina display | iPhone6 iPhone6s iPhone7 | 375.0 by 667.0 points (portrait) | 2.0 | 750.0 by 1334.0 pixels (portrait) |
5.5-inch iPhone family with Retina display | iPhone6Plus iPhone6sPlus iPhone7Plus | 414.0 by 736.0 points (portrait) | 3.0 | 1242.0 by 2208.0 pixels (portrait) |
12.9-inch iPad Pro with Retina display | iPad Pro | 1024.0 by 1366.0 points (portrait) | 2.0 | 2048.0 by 2732.0 pixels (portrait) |
本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。