React Native - 如何在字体缩放后检测字体大小?

0xo*_*ori 10 fonts react-native

我需要检测字体缩放后文本组件的字体大小.假设我有一个字体大小为18px的Text组件

<Text style={{fontSize: 18}}>My Text</Text>
Run Code Online (Sandbox Code Playgroud)

用户通过OS辅助功能设置设置了大字体.现在我的文字已经渲染了更大的字体(超过18像素).我知道我可以使用,allowFontScaling={false}但我不想丢失文本可访问性.我看到React native有一个用于获取字体比例的API,PixelRatio.getFontScale()但它不适用于iOS

返回字体大小的缩放系数.这是用于计算绝对字体大小的比率,因此任何严重依赖于它的元素都应该使用它来进行计算.

如果未设置字体比例,则返回设备像素比率.

目前,这仅在Android上实现,并反映了在设置>显示>字体大小中设置的用户首选项,在iOS上它将始终返回默认像素比率.@platform android

有任何想法吗?

小智 7

react-native-device-info提供了一个函数 getFontScale(),它似乎在 android 和 iOS 中都可以使用。


Ugu*_*gur 5

您可以使用useWindowDimensions

import { useWindowDimensions } from 'react-native';

const MyScreen = ({ navigation }) => {
   useWindowDimensions().fontScale // you will get current scale
}
Run Code Online (Sandbox Code Playgroud)