iOS中,[UIFont systemFontOfSize:18]
,这里的18,单位是pt。日常工作中,美工给我们的UI图中表面的字号大小,例如36,单位是px。也即像素大小。下面就来讲一下px和pt的转换。
首先讲两个基本概念:
物理像素:屏幕的实际分辨率,例如4s的640*960、5s的640*1136等。
逻辑像素:物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的。例如4s的320*480、5s的320*568等。
pt: iOS中的字号单位
px: 美工给的字体像素大小
dpi : 每英寸的像素
px = pt * DPI / 72
,所以推理得出 pt = px * 72 / DPI
。
如果px是物理像素下的大小,则算出的pt也是物理像素。但是iOS的字号是逻辑像素下的大小。所以需要先将px转换为逻辑像素,即如果是retain屏,例如@2x的,则物理像素px = 逻辑像素px*2。
这里同理,如果美工给你的是2倍图等,要先转成逻辑像素,即px/2。然后算出的pt就是逻辑像素下的字号大小
Photoshop 默认的DPI就是72
所以也就是说,一般美工给的图,如果字体大小是px,2倍图,则iOS中的字号 pt = px / 2。
eg: 美工给了你一张640*1136的5s用图,并标注其中一行字体大小为28px。首先先将物理像素转换为逻辑像素,即 28 / 2 = 14px
,然后带入公式,pt = 14 * 72 / DPI
,将DPI = 72
带入公式,得pt = 14
,所以可知,对应iOS的字体大小即为14号字体。
网友评论