当前位置: 首页 > 知识库问答 >
问题:

响应本机响应式字体大小

商辰钊
2023-03-14

请问react native如何处理或者做响应式字体?例如,在iphone 4s中,我的字体大小是:14,而在iphone 6中,我的字体大小是:18。

共有3个答案

史昊焱
2023-03-14

调整FontSizeToFitnumberOfLines适合我。他们将长电子邮件调整为1行。

<View>
  <Text
    numberOfLines={1}
    adjustsFontSizeToFit
    style={{textAlign:'center',fontSize:30}}
  >
    {this.props.email}
  </Text>
</View>
赖浩荡
2023-03-14

我们使用我们编写的一个简单、直接、缩放的utils函数:

import { Dimensions } from 'react-native';
const { width, height } = Dimensions.get('window');

//Guideline sizes are based on standard ~5" screen mobile device
const guidelineBaseWidth = 350;
const guidelineBaseHeight = 680;

const scale = size => width / guidelineBaseWidth * size;
const verticalScale = size => height / guidelineBaseHeight * size;
const moderateScale = (size, factor = 0.5) => size + ( scale(size) - size ) * factor;

export {scale, verticalScale, moderateScale};

做很多假设可以节省你的时间。你可以在我的博客上读到更多关于它的信息。

姚钊
2023-03-14

你可以使用PixelRatio

例如:

var React = require('react-native');

var {StyleSheet, PixelRatio} = React;

var FONT_BACK_LABEL   = 18;

if (PixelRatio.get() <= 2) {
  FONT_BACK_LABEL = 14;
}

var styles = StyleSheet.create({
  label: {
    fontSize: FONT_BACK_LABEL
  }
});

编辑:

另一个例子:

import { Dimensions, Platform, PixelRatio } from 'react-native';

const {
  width: SCREEN_WIDTH,
  height: SCREEN_HEIGHT,
} = Dimensions.get('window');

// based on iphone 5s's scale
const scale = SCREEN_WIDTH / 320;

export function normalize(size) {
  const newSize = size * scale 
  if (Platform.OS === 'ios') {
    return Math.round(PixelRatio.roundToNearestPixel(newSize))
  } else {
    return Math.round(PixelRatio.roundToNearestPixel(newSize)) - 2
  }
}

用法:

fontSize: normalize(24)

您可以更进一步,允许在每个

例子:

const styles = {
  mini: {
    fontSize: normalize(12),
  },
  small: {
    fontSize: normalize(15),
  },
  medium: {
    fontSize: normalize(17),
  },
  large: {
    fontSize: normalize(20),
  },
  xlarge: {
    fontSize: normalize(24),
  },
};

 类似资料:
  • 我正在用Expo和React Native开发平板电脑应用程序(Android和iOS)。 我设法使布局响应而又没有遇到任何问题。在不同大小的设备上运行该应用程序后,我注意到我忘记了字体大小的响应能力。 我尝试了我能找到的所有npm库(、

  • 我使用Zurb Foundation3网格创建了一个站点。每个页面都有一个大的: null null 当我将浏览器的大小调整为移动大小时,大字体不会调整,并导致浏览器包括一个水平滚动以适应大文本。 我注意到,在Zurb Foundation 3排版示例页面上,头适应浏览器的压缩和扩展。 我是不是错过了一些很明显的东西?我如何实现这一点?

  • 问题内容: 我正在尝试使用引导程序来构建响应式布局,当前正在使用font-size:3em定义一些标题; 但是,当缩小布局时,这太大了。如何快速缩小文本大小? 问题答案: 最简单的方法是使用%或em中的尺寸。只需更改基本字体大小,一切都会改变。 减 您可以使用视口单位(vh,vw …),但它们 在Android <4.4上不起作用

  • 我想根据响应本机中的屏幕宽度更改。 我想做这样的东西,预期的结果是在向添加数字时变得更小。 我尝试的资源: React Native响应字体大小 https://reactnativeexample.com/responsive-fontsize-based-on-screen-size-of-the-device-in-react-native/ 更多的不起作用。

  • 如果说集合是 Meteor 的核心功能,那么响应式可以能让这个核心功能更强大。 集合从根本上改变你的应用程序的数据处理方式。从而不必手动检查数据更改(例如,通过一个 AJAX 调用),再根据这些变化去修改 HTML 页面,Meteor 可以随时检测到数据的更改,并将它无缝地应用到你的用户界面上。 让我们思考一下:在后台,当底层的数据集合被更新以后, Meteor 能够马上修改用户界面的任何部分。

  • 一、整个图表响应式 默认情况下,Highcharts 图表都是支持整个图表跟随图表容器响应式的,无需额外配置,只需要保证容器的宽度自适应即可,下面是最简单的容器样式设置 <!-- 通过设置 minwidth 保证 div 容器自适应,那么 Highcharts 图表就会跟随容器自适应 --> <div style="height:400px;min-width:300px"></div> 另外