react-native 不同分辨率设备适配(rem、px解决方案)

react-native全局使用rem和px

react-native官方提供的是dp值,所以不同分辨率的设备之间会造成显示上的差异。所以可以使用前端最常用的rem方式来进行适配,对于个别需要真实像素的地方,可以使用px像素进行适配。

我的项目目录大概是这样的

-src
     -constant
     -screens
     ...
app.js
index.js

1、首先在constant目录下创建Global.js提供暴露给全局的常量

// Global.js  当然可以挂载其他常用的全局常量,例如判断平台ios还是android等...
import { Dimensions, PixelRatio } from 'react-native';

// 是否横屏来判断真实屏幕宽高
var relWidth = Dimensions.get('window').width
var relHeight = Dimensions.get('window').height
if (relWidth > relHeight) {
    let change = relWidth
    relWidth = relHeight
    relHeight = change
}
const { width, height } = Dimensions.get('window')
// 注意这里根据UI原稿用对应的屏幕像素宽度替换掉375即可达到原稿的显示比例
const remScale = width / 375
const pxScale = 1 / PixelRatio.get()

global.gScreen = {
    screen_width: width,
    screen_height: height,
}

// 解决不同设备间的显示差异
global._rem = function (number) {
    return number * remScale
}
global._px = function (number) {
    return number * pxScale
}

2、在index.js中,所有的import之前导入Global.js

// index.js
// 所有的import之前导入Global,一定格外注意
import Global from './src/contants/Global'
import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);

3、在任意组件或页面内部可以直接使用_rem()、_px()方法

const styles = StyleSheet.create({
    viewTest: {
        height: _rem(375),
        width: _rem(200),
        // height:_px(375),
        // width:_px(200)
    }
)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容