gpt4 book ai didi

reactjs - 如何使用 react-native 处理自定义字体和 fontWeight

转载 作者:行者123 更新时间:2023-12-04 12:39:22 25 4
gpt4 key购买 nike

我设法按照 official documentation 在我的 react-native expo 应用程序上加载自定义字体:

const App = () => {
let [fontsLoaded] = useFonts({
'Lato-Regular': require('../assets/fonts/Lato-Regular.ttf'),
'Lato-Bold': require('../assets/fonts/Lato-Bold.ttf'),
'Poppins-Light': require('../assets/fonts/Poppins-Light.ttf'),
'Poppins-Bold': require('../assets/fonts/Poppins-Bold.ttf'),
});

所以我可以将它与组件样式一起使用:

<Text style={{
fontFamily: 'Lato-Bold'
}}>Home page.</Text>

但我想像这样使用它:

<Text style={{
fontFamily: 'Lato',
fontWeight: 'bold',
}}>Home page.</Text>

这适用于系统字体,但不适用于自定义字体。

我该如何处理?

最佳答案

您必须使用自定义组件并从中提取字体粗细。这就是它的样子

import React from 'react';
import { View, Text as RnText, StyleSheet } from 'react-native';

const Text = ({ style, children, ...rest }) => {
let baseStyle = styles.medium;

// Multiple styles may be provided.
(Array.isArray(style) ? style : [style]).forEach((style) => {
if (style && style.fontWeight) {
baseStyle = style.fontWeight === 'bold' ? styles.bold : styles.medium;
}
});

// We need to force fontWeight to match the right font family.
return <RnText style={[baseStyle, style, { fontWeight: 'normal' }]} {...rest}>{children}</RnText>;
};

const styles = StyleSheet.create({
bold: {
fontFamily: 'Lato-Bold',
},
light: {
fontFamily: 'Lato-Light',
},
medium: {
fontFamily: 'Lato-Black',
},
});

export default Text;

关于reactjs - 如何使用 react-native 处理自定义字体和 fontWeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61032122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com