美文网首页react-native
react-native屏幕适配

react-native屏幕适配

作者: 07be9a549c1e | 来源:发表于2018-08-17 18:14 被阅读3022次

    写一个屏幕适配类文件AdapterUtil.js,这样避免每次进行单位换算

    "use strict"
    
    import {Dimensions, StatusBar, Platform, PixelRatio} from 'react-native'
    
    //UI设计图的宽度
    const designWidth = 750
    //UI设计图的高度
    const designHeight = 1334
    
    //手机屏幕的宽度
    export const width = Dimensions.get('window').width;
    //手机屏幕的高度
    export const height = Dimensions.get('window').height;
    //计算手机屏幕宽度对应设计图宽度的单位宽度
    export const unitWidth = width / designWidth
    //计算手机屏幕高度对应设计图高度的单位高度
    export const unitHeight = height / designHeight
    
    export const statusBarHeight = getStatusBarHeight();
    export const safeAreaViewHeight = isIphoneX() ? 34 : 0
    //标题栏的高度
    export const titleHeight = unitWidth * 100 + statusBarHeight;
    
    //字体缩放比例,一般情况下不用考虑。
    // 当应用中的字体需要根据手机设置中字体大小改变的话需要用到缩放比例
    export const fontscale = PixelRatio.getFontScale()
    
    /**
     * 判断是否为iphoneX
     * @returns {boolean}
     */
    export function isIphoneX() {
        const X_WIDTH = 375;
        const X_HEIGHT = 812;
        return Platform.OS == 'ios' && (height == X_HEIGHT && width == X_WIDTH)
    }
    
    //状态栏的高度
    export function getStatusBarHeight() {
        if (Platform.OS == 'android') return StatusBar.currentHeight;
        if (isIphoneX()) {
            return 44
        }
        return 20
    }
    

    使用方法 ,直接按照UI图的 标注尺寸*unitWidth

    import  React,{Component} from 'react'
    import {
      View,
      StyleSheet,
      Text
    } from 'react-native'
    import {unitWidth, width}"../../utils/AdapterUtil";
    
    export default class Demo extends Component {
    
      render() {
            const {backgroundColor, titleColor} = this.props
            return (
                <View style={styles.view}>
                        <View  style={styles.view2}>
                </View>
            )
      }
    
    }
    
    const styles= StyleSheet.create({
      view:{
          flex:1,
           alignItems: 'center', 
      },
      view2:{
          width:unitWidth*375,
          height:unitWidth*375,
          backgroundColor:'red'
      }
    })
    
    

    相关文章

      网友评论

        本文标题:react-native屏幕适配

        本文链接:https://www.haomeiwen.com/subject/zwutiftx.html