首页 > 解决方案 > 当应用程序被拉到前台时,为什么我在 React Native 中的自定义字体恢复为系统字体?

问题描述

我有一个相对较小的应用程序,由 StackNavigator 管理几个视图。

我有三种自定义字体 (TTF),在整个应用程序中使用。

该应用程序在 Android 和 iOS 的模拟器上运行良好 - 自定义字体按预期显示。

我现在已经开始将我的应用程序提交给 TestFlight 并在设备上运行它——到目前为止,我是两部独立的 iPhone。

首次加载时,应用程序按预期工作并且字体正确显示。

但是,当应用程序进入后台,然后再次被拉入前台时,字体会恢复为系统字体。(从后台拉出的页面实际上看起来是正确的,当堆栈切换到另一个视图时,这些字体是不正确的。)

如果我强制关闭应用程序,然后重新启动,一切都会再次正常,直到它下次进入后台。

关于为什么这些资源没有显示的任何想法?

标签: iosreact-nativefonts

解决方案


回过头来为未来的读者回答这个问题:

我将我的应用程序分解为多个部分。用最新的RN版本等生成了一个新项目。

用 react-navigation 构建了一个最小的项目,但它崩溃了。

删除导航,并使用条件渲染来显示页面,它崩溃了。

进一步剥离,最终发现在 XCode 中设置显示名称是罪魁祸首:我的应用名称有一个“?” (问号)在里面。

iOS 指南说这没问题,部署时没有任何问题,但是关于 React Native 和使用这个角色重新加载上下文的一些东西破坏了一些东西。我的直觉说,一些查找字体文件的通配程序中的问号导致它丢失。

删除了问号,它可以很好地回到前台。


推荐阅读