美文网首页
React-Native Dimensions 获取高度不准确解

React-Native Dimensions 获取高度不准确解

作者: qhrosl | 来源:发表于2021-09-29 10:27 被阅读0次

    在实际开发中,React-Native通过调用Dimensions.get('window')去获取全面屏手机(MI 10)的高度时,发现获取到的高度要比实际手机高度来的短一些,针对此种情况对全面屏手机做适配。

    首先通过获取屏幕的纵横比来判断当前手机是否为全面屏,常规纵横比为大于1.8 (16:9)。(这里只做了简单判断,当然也有很多更为准确的方案)

    查阅相关资料后发现是因为全面屏的statusBar高度问题。

    导包:

    import { Dimensions,NativeModules } from 'react-native';
    const { StatusBarManager } = NativeModules;
    

    定义高和宽并计算纵宽比:

    const {width,height} = Dimensions.get('window')
    const wh = height/width
    

    对纵宽比做判断并拿到真实高度(针对安卓):

    const trueheight = wh  > 1.8 ? height+ StatusBarManager.HEIGHT * 2 : height,
    

    存疑:

    1.计算纵宽比,当手机为全面屏时,是否会因为获取到的长度会比实际的少,导致wh(纵宽比)降低,影响后面的判断。
    补充:MI 10 取Dimensions.get('window').height 拿到的高度为710左右,屏幕宽度在392,纵宽比计算得1.81。
    2.在链接1中认为差一个StatusBar的高度,实际编写中,发现链接2的两个高度较为合理。
    补充:全面屏发现小米10 占两个高度 , 另一款全面屏测试机占一个高度

    实际测试中发现ios设备如果为全面屏则不需要进行处理 所以这里我们需要加一层判断。

    import { Dimensions, PixelRatio, NativeModules, Platform } from 'react-native';
    const { StatusBarManager } = NativeModules;
    
    height: Platform.OS === 'ios' ? Dimensions.get('window').height : Dimensions.get('window').height / Dimensions.get('window').width > 1.8 ? Dimensions.get('window').height + StatusBarManager.HEIGHT * 2 : Dimensions.get('window').height,
    

    相关文章

      网友评论

          本文标题:React-Native Dimensions 获取高度不准确解

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