React Native:如何在Android和iOS中调整字体大小以支持多种不同的分辨率和屏幕?

React Native:如何在Android和iOS中调整字体大小以支持多种不同的分辨率和屏幕?,android,ios,react-native,react-native-android,Android,Ios,React Native,React Native Android,我很难在现有的许多不同屏幕上找到正确的字体大小 目前,我有一个名为getCorrectFontSizeForScreen的助手函数 export function getCorrectFontSizeForScreen(currentFontSize){ const maxFontDifferFactor = 6; //the maximum pixels of font size we can go up or if(Platform.OS === 'ios'){ //iOS

我很难在现有的许多不同屏幕上找到正确的字体大小

目前,我有一个名为
getCorrectFontSizeForScreen
的助手函数

export function getCorrectFontSizeForScreen(currentFontSize){

  const maxFontDifferFactor = 6; //the maximum pixels of font size we can go up or

  if(Platform.OS === 'ios'){    //iOS part
    let devRatio = PixelRatio.get();
    this.fontFactor = (((screenWidth*devRatio)/320)*0.55+((screenHeight*devRatio)/640)*0.45)
    if(this.fontFactor<=1){
      return currentFontSize-float2int(maxFontDifferFactor*0.3);
    }else if((this.fontFactor>=1) && (this.fontFactor<=1.6)){
      return currentFontSize-float2int(maxFontDifferFactor*0.1);
    }else if((this.fontFactor>=1.6) && (this.fontFactor<=2)){
      return currentFontSize;
    }else if((this.fontFactor>=2) && (this.fontFactor<=3)){
      return currentFontSize+float2int(maxFontDifferFactor*0.85);
    }else if (this.fontFactor>=3){
      return currentFontSize+float2int(maxFontDifferFactor);
    }
  }else{    //Android part

    let scale = screenWidth/375;  //got this from the f8 facebook project

    this.fontFactor = (((screenWidth)/320)*0.65+((screenHeight)/640)*0.35)

    if(this.fontFactor<=1){   //for 0.8 until 1.0 use 8 (800x600 phone this.fontFactor == 0.961)
      return float2int(scale * (currentFontSize+8));
    }else if((this.fontFactor>=1) && (this.fontFactor<=1.6)){ //for 1.0 until 1.5 use 4 (NEXUS 5 this.fontFactor == 1.055)
      return float2int(scale * (currentFontSize+4));
    }
    else{
      return float2int(scale * (currentFontSize+2));
    }
  }



function float2int (value) {
  return value | 0; //Converts a float to an integer
}
它似乎在iOS上运行得很好,但在Android上却不太好。。。我想我需要更多的fontFactor组来形成这个试错列表

但我想知道,有没有更好的办法? 其他人对此怎么办


谢谢大家!

React Native中的大小基于点而不是像素,因此您不需要如此复杂的逻辑来根据设备dpi更改字体大小。相反,如果要撤消自动应用的缩放,则应将像素大小除以像素比率

const styles = StyleSheet.create({
  aText:{
    color: 'white',
    fontFamily: 'Whatever',
    fontSize: getCorrectFontSizeForScreen(14),
  }
});