集成到現(xiàn)有Android工程的時候, 報錯: Error: Requiring module "8" which threw an exception. 后來發(fā)現(xiàn)這篇文章http://www.reibang.com/p/d63c9a22973d . 沒有按照官方教程, 而是新建了一個AwesomeProject(
react-native init AwesomeProject
), 將node_modules和package.json拷貝過來, 就搞定了.做適配的時候卿吐,由于設(shè)計師只出iPhone6尺寸的設(shè)計圖森缠,于是iOS使用的方式是以寬度為基準(zhǔn)進(jìn)行等比縮放淑玫。在React Native也使用了這種方法绑嘹。字體也是通過fontSize乘以寬度比系數(shù)伏嗜。在大多數(shù)安卓手機(jī)下沒有問題味悄,但是發(fā)現(xiàn)在LG某款手機(jī)下郎仆,卻出現(xiàn)了一個奇怪的現(xiàn)象——字體比一般的大。后來發(fā)現(xiàn)是這個原因:安卓有個概念是fontScale瞎嬉,代表字體比例蝎毡,iOS并沒有這個概念。在Dimensions.get('window')的結(jié)果中氧枣,iOS只有width沐兵,height和scale。這個scale代表的是像素密度便监,即一個dp下的像素個數(shù)扎谎。因此,可以理解為iOS默認(rèn)所謂的fontScale就是scale烧董。
將Dimensions.get('window')結(jié)果打印毁靶,如下:
機(jī)型 | 屏幕寬 | 屏幕高 | scale | fontScale |
---|---|---|---|---|
ip5s | 320 | 568 | 2 | * |
ip6/6s | 375 | 667 | 2 | * |
ip6p | 414 | 736 | 3 | * |
三星note3 | 360 | 640 | 3 | 3 |
nexus6 | 411 | 683 | 3.5 | 3.5 |
三星s4 | 360 | 640 | 3 | 3 |
LG nexus5 | 360 | 592 | 3 | 3.4499 |
上面表格中,安卓手機(jī)的機(jī)型名字可能不一定對(媽蛋我是iOS開發(fā))解藻,要表達(dá)的意思就是:你看上面那個LG的手機(jī)老充,scale和fontScale不一樣,這樣就會導(dǎo)致螟左,同樣的fontSize是13啡浊,在LG手機(jī)上觅够,字體就會顯示的大一點。
解決方案:字體等比縮放再乘以一個scale/fontScale的字?jǐn)?shù)就好了巷嚣。