集成到現有Android工程的時候, 報錯: Error: Requiring module "8" which threw an exception. 后來發現這篇文章http://www.lxweimin.com/p/d63c9a22973d . 沒有按照官方教程, 而是新建了一個AwesomeProject(
react-native init AwesomeProject
), 將node_modules和package.json拷貝過來, 就搞定了.做適配的時候,由于設計師只出iPhone6尺寸的設計圖,于是iOS使用的方式是以寬度為基準進行等比縮放。在React Native也使用了這種方法。字體也是通過fontSize乘以寬度比系數。在大多數安卓手機下沒有問題,但是發現在LG某款手機下,卻出現了一個奇怪的現象——字體比一般的大。后來發現是這個原因:安卓有個概念是fontScale,代表字體比例,iOS并沒有這個概念。在Dimensions.get('window')的結果中,iOS只有width,height和scale。這個scale代表的是像素密度,即一個dp下的像素個數。因此,可以理解為iOS默認所謂的fontScale就是scale。
將Dimensions.get('window')結果打印,如下:
機型 | 屏幕寬 | 屏幕高 | 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 |
上面表格中,安卓手機的機型名字可能不一定對(媽蛋我是iOS開發),要表達的意思就是:你看上面那個LG的手機,scale和fontScale不一樣,這樣就會導致,同樣的fontSize是13,在LG手機上,字體就會顯示的大一點。
解決方案:字體等比縮放再乘以一個scale/fontScale的字數就好了。