程序员和UI之间,常常存在着“语言障碍”——其实就是惯用单位不同,导致语言不通,鸡同鸭讲眼碌碌。本文将以iOS设备为例,做一回程序员与UI的翻译机。
  首先,我们来看一下iOS设备的屏幕尺寸:
图1
  其实从上表就可以看出语言不通的根本原因就在于:程序员是用软件尺寸(以逻辑点/PT为单位)来编程,而UI是按硬件尺寸(其实还有个“设计尺寸”)——也就是屏幕的实际物理尺寸(以像素/PX为单位)来出图。
  苹果在引入第一代Retina设备开始后,为了不让原有的应用程序在新的Retina屏幕上只占半屏显示,将应用程序绘制的所有内容都在内部乘以2,不需要作任何代码改动就可以适配Retina屏。所以程序员一般不会去管硬件尺寸,都是用软件尺寸来交流。可UI不买这账啊,他们用的都是用像素来交流的。你要是跟UI说要一颗44*44的按钮,那他肯定是给你一颗44*44px的。
  当然你可以跟UI讲清楚上面的规则,然后看谁妥协一下,要跟对方沟通时使用“外语”(乘以或除以相应的像素密度)。但是更好的办法是跟UI约定好,让其使用一倍图进行设计,再按相应倍数输出,这样沟通时就不需要换算了。还是回到上面的场景,那就变成UI在Sketch里用一倍稿(375*667px的画布) 画了一颗44*44px的按钮,然后输出成88*88px(@2x)和132*132pc(@3x)的图片,正好就是我们所需要的44*44pt。
  细心的读者可能已经发现,对于Plus系列机型,其硬件尺寸与软件尺寸的比例实际上是2.608:1。也就是说,就硬件而已Plus系列并不是3倍的Retina屏,而就软件而言却是3倍大小。这意味着,应用程序使用的软件屏幕尺寸414px*736px会安装规则,首先映射为1242px*2208px的设计屏幕尺寸,再降低采样缩小到适应1080px*1920px的实际硬件尺寸投射到屏幕上去,如下图:
图2