CodeV

2.1-点与像素

在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

图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
2
3
4
- (BOOL) hasRetinaDisplay
{
return ([UIScreen mainScreen].scale == 2.0f);
}

译者注:这种判断已经不再准确,现在的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上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。