Expo以一种新的方式加载字体:
https://docs.expo.io/versions/latest/sdk/font/
以下示例基于native-base和expo文档中的示例。
https://github.com/GeekyAnts/NativeBase
你可能需要先运行这个:
expo install expo-font
然后,在你的代码中:
import * as Font from 'expo-font'
并且
export default class App extends React.Component {
async componentDidMount() {
await Font.loadAsync({
'open-sans-bold': require('./assets/fonts/OpenSans-Bold.ttf'),
});
this.setState({ isReady: true });
}
}
使用
native-base/Fonts/Roboto.ttf
的导入路径对我没有起作用,但是使用以下类似的相对路径可以解决问题:
await Font.loadAsync({
Roboto: require('../node_modules/native-base/Fonts/Roboto.ttf'),
Roboto_medium: require('../node_modules/native-base/Fonts/Roboto_medium.ttf')
});
这里是一个稍微更完整的例子:
export default class extends React.Component {
state = {
isReady: false,
};
async componentDidMount() {
await Font.loadAsync({
Roboto: require('../node_modules/native-base/Fonts/Roboto.ttf'),
Roboto_medium: require('../node_modules/native-base/Fonts/Roboto_medium.ttf')
});
this.setState({ isReady: true });
}
render() {
if (!this.state.isReady) {
return ( <AppLoading />);
}
return <Navigator />;
}
}