我想在我的应用中使用自定义字体,但我一直收到错误
[RCTLog][tid:0x78f70450][RCTConvert.m:581]>Unrecognized font family 'Roboto'
这是否意味着我必须弄乱iOS直接导入字体的方式?
答案 0 :(得分:39)
在Xcode项目中创建一个新的组字体
将字体从Finder拖放到刚刚创建的字体组中,并在添加到目标列表中检查项目名称
在项目的主目录中展开项目名称文件夹,然后打开Info.plist
将Fonts provided by application
添加为新密钥
在Fonts provided by application
下添加新项目,并将项目值设置为您已添加到字体文件夹中的每种字体的扩展名的完整字体名称
OpenSans-ExtraBold.ttf
,则该值应为该项的值。要在React Native中使用该字体,只需为元素设置fontFamily
样式属性(请参阅this)。请注意,样式应使用字体的名称而不是文件名。
fontFamily: 'Open Sans'
运行Shift + Command + K清除最后一次构建
然后Command + B开始新版本
最后是Command + R来运行应用程序
如果您仍然看到错误无法识别的字体系列,请重新启动您的反应包装程序。
https://github.com/alucic/react-native-cheat-sheet
希望它有所帮助!
答案 1 :(得分:31)
您现在不需要手动安装rnpm。在第一步之后,在第二步中,您只需使用命令react-native link
,您的所有资产都将被链接。 rnpm现在正在与react-naitve合并。在RN https://github.com/facebook/react-native/commit/e8b508144fdcdea436cf4d80d99daec757505c70
通过`rnpm有一种更简单的方法。它为android和ios添加了字体。将要添加的字体放在项目目录中的适当位置。在你的package.json中添加以下内容:
...
"rnpm": {
"assets": ["path/to/your/font/directory"]
},
...
然后从命令行执行:rnpm link
现在,您可以在应用中愉快地使用字体。
注意:你必须安装rnpm才能工作。
只需npm install -g rnpm
答案 2 :(得分:21)
Aakash的回答是正确的。
方式:强>
"rnpm": { "assets": ["./your/fonts/folder"] }
react-native link
任选地:
npm install -g rnpm
rnpm link
使用示例
"rnpm": { "assets": ["./src/assets/fonts"] }
react-native link
<文字样式= {{fontFamily:myFont}}>您好MyFont! < /文字>
图片:强> package.json link
感谢Aakash给出了很好的答案,希望你不要介意像我一样在那里重新点击!
答案 3 :(得分:20)
答案 4 :(得分:2)
许多答案针对本机版本<0.60
对于使用本机版本> 0.60 , 'rnpm' is deprecated
和自定义字体的用户将无效。
现在,为了在react-native版本> 0.60中添加自定义字体,您将必须:
1-在项目的根文件夹中创建一个名为react-native.config.js
的文件。
2-将此添加到该新文件中
module.exports = {
assets: ['./assets/fonts/']
};
在根项目路径中 3-运行react-native link
命令。
PS :在运行react-native link
命令之前,请确保您拥有正确的字体文件夹路径
答案 5 :(得分:0)
如果您使用的是Create React Native App,则在运行react-native link
时,您会看到:
react-native link
无法在Create React Native App中使用 项目。如果您需要包含依赖于自定义的库 本机代码,您可能必须先弹出。看到 https://github.com/react-community/create-react-native-app/blob/master/EJECTING.md 了解更多信息。
如果你要做的只是添加自定义字体而不是弹出,你可以使用Expo,默认情况下也包含在CRNA中。基本上,你这样做:
await Font.loadAsync({
'open-sans-bold': require('./assets/fonts/OpenSans-Bold.ttf'),
});
此外,您只能使用ttf
或otf
格式化字体,不能使用ttc
字体:https://developer.apple.com/documentation/uikit/text_display_and_fonts/adding_a_custom_font_to_your_app
以下是来自世博会的详细文档:https://docs.expo.io/versions/latest/guides/using-custom-fonts
答案 6 :(得分:0)
在项目的根/资产/字体文件夹中添加字体文件(即 .otf 或 .ttf )。
: rnpm:“资产”:[“ ./assets/font”],
react-native.config.js
module.exports = {
project: {
ios: {},
android: {},
},
assets: ['./assets/fonts']
};
fontFamily: 'Robotto-Regular'
这应该解决字体不支持会出现的所有错误,并且您可以使用自定义字体。
答案 7 :(得分:0)
创建一个文件,即defaultconfig.js
然后在该文件中添加字体,然后使用
在fontfamily:''montoface
的小部件中