iOS @2x @3x 字體適配

這個(gè)起因是因?yàn)樽罱趯懶马?xiàng)目,關(guān)于字體的通用代碼沒(méi)有導(dǎo)進(jìn)來(lái),然后UI同學(xué)在檢查頁(yè)面的時(shí)候發(fā)現(xiàn)在plus上字體小了,然后進(jìn)行了一系列的深究

  1. 先說(shuō)一下以前的解決方案, 判斷如果是 plus機(jī)型那就把字體大小+1(或者+2, 這個(gè)不用死扣 反正也就視覺(jué)上差不多,但是沒(méi)有理論根據(jù))
  2. 網(wǎng)上的文章千千萬(wàn),質(zhì)量參差不齊 請(qǐng)閱讀并實(shí)踐之后再得出結(jié)論,不要上來(lái)就 要demo 拿了代碼就直接往項(xiàng)目里面扔,有時(shí)候會(huì)死的很慘(下面會(huì)說(shuō))
  3. 解決方案很簡(jiǎn)單, 核心在于 UI同學(xué)給你的設(shè)計(jì)稿 是PX單位 還是PT單位

首先來(lái)看一下iOS的UIFont 到底是怎么回事

class func systemFont(ofSize fontSize: CGFloat) -> UIFont
image.png

fontSize這個(gè)參數(shù)需要的數(shù)值單位 是 points
但是! 蘋果的這個(gè) points 和 百度到的 pt(磅)這個(gè)單位 雖然叫一個(gè)名字,但不是一回事

Points Versus Pixels
In iOS there is a distinction between the coordinates you specify in your drawing code and the pixels of the underlying device. When using native drawing technologies such as Quartz, UIKit, and Core Animation, the drawing coordinate space and the view’s coordinate space are both logical coordinate spaces, with distances measured in points. These logical coordinate systems are decoupled from the device coordinate space used by the system frameworks to manage the pixels onscreen.
The system automatically maps points in the view’s coordinate space to pixels in the device coordinate space, but this mapping is not always one-to-one. This behavior leads to an important fact that you should always remember:
One point does not necessarily correspond to one physical pixel.
The purpose of using points (and the logical coordinate system) is to provide a consistent size of output that is device independent. For most purposes, the actual size of a point is irrelevant. The goal of points is to provide a relatively consistent scale that you can use in your code to specify the size and position of views and rendered content. How points are actually mapped to pixels is a detail that is handled by the system frameworks. For example, on a device with a high-resolution screen, a line that is one point wide may actually result in a line that is two physical pixels wide. The result is that if you draw the same content on two similar devices, with only one of them having a high-resolution screen, the content appears to be about the same size on both devices.
Note: In the context of PDF rendering and printing, Core Graphics defines "point" using the industry standard mapping of one point to 1/72 of an inch.

developerAPI地址

如果沒(méi)看懂啥意思, 給你轉(zhuǎn)換成一句簡(jiǎn)單的 如果是 一個(gè) 750 * 300 px的圖 你只需要知道 代碼中的尺寸是是 375*150 就好,
至于你百度搜索到的 關(guān)于pt和px的轉(zhuǎn)換相關(guān)的文章 什么 72/96 或者是 1/72 這類的 文章表述的都沒(méi)錯(cuò), 但是請(qǐng)記住 這些計(jì)算方式不適合iOS!!!
如果你去搜索 iOS字體適配相關(guān)的文章,可能映入你眼簾的 會(huì)是什么 啊 @3x的屏幕 縮放比是3, @2x屏幕的縮放比是 2, 所以 在@3x的屏幕上 你的文字 就要 用 fontSize * 1.5 就可以啦~

3901540990798_.pic_hd.jpg

比如 上圖是設(shè)計(jì)稿,你可以這樣試試 將字體大小乘個(gè)1.5, 我保證 你們親愛(ài)的UI同學(xué) 分分鐘能罵你祖宗十八輩的
3891540990781_.pic_hd.jpg

同學(xué),老年機(jī)啦有沒(méi)有, 難道都是 云開(kāi)發(fā)? 既然寫成文章就要負(fù)點(diǎn)責(zé)任好不啦

其實(shí),你是被繞進(jìn)去了, 想一下 全國(guó) 叫 小明的人有的是, 不是所有的小明都是你認(rèn)識(shí)的那個(gè)小明的,
所以 不要拿pt(磅)轉(zhuǎn)px的公式帶入到 iOS 字體的大小設(shè)置中
一般設(shè)計(jì)同學(xué)給的設(shè)計(jì)稿都是基于4.7寸的屏幕(即 750 x 1334), 所以只要記住一點(diǎn) 2px = 1points 就好了
那么其實(shí)適配 puls機(jī)型的字體很簡(jiǎn)單,想一下UI上是怎么做適配的?

// UI基于 4.7寸型號(hào)屏幕做的設(shè)計(jì)稿
let KAdaptedHeight = UIScreen.main.bounds.size.width / 375.0 

UI適配 都是這樣做出來(lái)的吧?
那么 字體也一樣

    UIFont.systemFont(ofSize: fontSize * KAdaptedHeight)

這樣就可以了,保準(zhǔn)你們可愛(ài)的UI同學(xué) 不會(huì)再來(lái)找你們字體相關(guān)的麻煩

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末韧献,一起剝皮案震驚了整個(gè)濱河市撕贞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盹廷,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姥宝,死亡現(xiàn)場(chǎng)離奇詭異善涨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)啃奴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門潭陪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事依溯±涎幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵黎炉,是天一觀的道長(zhǎng)枝秤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)慷嗜,這世上最難降的妖魔是什么淀弹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮洪添,結(jié)果婚禮上垦页,老公的妹妹穿的比我還像新娘。我一直安慰自己干奢,他們只是感情好痊焊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著忿峻,像睡著了一般薄啥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逛尚,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天垄惧,我揣著相機(jī)與錄音,去河邊找鬼绰寞。 笑死到逊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滤钱。 我是一名探鬼主播觉壶,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼件缸!你這毒婦竟也來(lái)了铜靶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤他炊,失蹤者是張志新(化名)和其女友劉穎争剿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體痊末,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚕苇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凿叠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涩笤。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辆它,到底是詐尸還是另有隱情,我是刑警寧澤履恩,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布锰茉,位于F島的核電站,受9級(jí)特大地震影響切心,放射性物質(zhì)發(fā)生泄漏飒筑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一绽昏、第九天 我趴在偏房一處隱蔽的房頂上張望协屡。 院中可真熱鬧,春花似錦全谤、人聲如沸肤晓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)补憾。三九已至,卻和暖如春卷员,著一層夾襖步出監(jiān)牢的瞬間盈匾,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工毕骡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留削饵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓未巫,卻偏偏與公主長(zhǎng)得像窿撬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子橱赠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,334評(píng)論 0 10
  • 上午十點(diǎn)二十開(kāi)始在四年級(jí)教室里給孩子們上公開(kāi)課尤仍,整堂課下來(lái)比較流暢,我們上得比較成功狭姨,感覺(jué)是這幾次磨課中最好的一次...
    桃子_610c閱讀 147評(píng)論 0 0
  • 小路荒蕪饼拍,蒲公英再也等不來(lái)我們的送別了 河水吞沒(méi)了沙床 去年我們開(kāi)辟的那條小路 也被雜草吞沒(méi)了 蒲公英又長(zhǎng)出了潔白...
    者者行閱讀 250評(píng)論 0 5
  • 我從未想過(guò)自己可以如此多情 或是如此深情 想那初見(jiàn)時(shí) 你我未必心存想象 就當(dāng)以往無(wú)數(shù)場(chǎng)遇見(jiàn)一樣 當(dāng)我浸在她的溫柔敦...
    木春閱讀 279評(píng)論 0 3
  • 我得到的都終將失去 我失去的都不會(huì)回來(lái) 這列車一直往前開(kāi) 再美的相遇轉(zhuǎn)瞬也已不再 我曾以為會(huì)都終將擁有 然后把功與...
    那一年t閱讀 200評(píng)論 0 1