iOS中,[UIFont systemFontOfSize:18]
养泡,這里的18奈应,單位是pt。日常工作中杖挣,美工給我們的UI圖中表面的字號大小,例如36惩妇,單位是px。也即像素大小乔妈。下面就來講一下px和pt的轉(zhuǎn)換氓皱。
首先講兩個(gè)基本概念:
物理像素:屏幕的實(shí)際分辨率,例如4s的640*960波材、5s的640*1136等。
邏輯像素:物理分辨率是硬件所支持的唯灵,邏輯分辨率是軟件可以達(dá)到的躲因。例如4s的320*480、5s的320*568等大脉。
pt: iOS中的字號單位,1pt = 1/72 英寸琐驴。
px: 美工給的字體像素大小
DPI : 每英寸的像素?cái)?shù)
由上述3個(gè)定義可知,1英寸有DPI個(gè)像素?cái)?shù)绝淡。所以,1像素的大小 = 1/DPI 英寸悬包。
1px * DPI = 1英寸 = 1pt * 72
=> 1px * DPI = 1pt * 72
=> 1px = 1pt * 72 / DPI
舉個(gè)列子:
如果DPI是96馍乙,帶入公式,我們可以得出丝格,1px = 1pt * 3 / 4, 4px = 3pt
即 4px 的大小和 3pt 的大小相同,所以如果UI給出的是 4px预伺,則我們應(yīng)該使用 3pt曼尊。
即數(shù)值大小應(yīng)該為: pt = px * 3/4 => pt = px * 72 / DPI
結(jié)論:pt = px * 72 / DPI
。
如果px是物理像素下的大小骆撇,則算出的pt也是物理像素。但是iOS的字號是邏輯像素下的大小。所以需要先將px轉(zhuǎn)換為邏輯像素高每,即如果是retain屏,例如@2x的爷怀,則物理像素px = 邏輯像素px*2带欢。
這里同理,如果美工給你的是2倍圖等乔煞,要先轉(zhuǎn)成邏輯像素,即px/2逗宜。然后算出的pt就是邏輯像素下的字號大小。
Photoshop 默認(rèn)的DPI就是72
所以也就是說纺讲,一般美工給的圖,如果字體大小是px逢渔,2倍圖乡括,則iOS中的字號pt = px / 2
。
eg: 美工給了你一張640*1136的5s用圖粟判,并標(biāo)注其中一行字體大小為28px。首先先將物理像素轉(zhuǎn)換為邏輯像素角钩,即 28 / 2 = 14px
呻澜,然后帶入公式,pt = 14 * 72 / DPI
羹幸,將DPI = 72
帶入公式,得pt = 14
栅受,所以可知屏镊,對應(yīng)iOS的字體大小即為14號字體。
在Windows里而芥,默認(rèn)的顯示設(shè)置中,把文字定義為96DPI误辑,所以這里吧DPI = 96
帶入公式歌逢, pt = px * 72 / 96
,即: pt = px * 0.75
趋翻。
這里一個(gè)很重要的地方盒蟆,就是美工給的圖的DPI师骗,所以小伙伴們一定要看好DPI,再算怎么轉(zhuǎn)換辟癌。
這里附上一張mac下如何查看DPI的圖黍少。直接使用mac自帶的預(yù)覽工具,菜單欄->工具->顯示檢測器厂置。