集成到现有Android工程的时候, 报错: Error: Requiring module "8" which threw an exception. 后来发现这篇文章http://www.jianshu.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的字数就好了。