当应用程序被拉到前台时,为什么我在 React Native 中的自定义字体会恢复为系统字体?

问题描述 投票:0回答:2

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

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

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

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

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

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

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

对于为什么这些资源没有显示有什么想法吗?

ios react-native fonts
2个回答
2
投票

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

我将我的应用程序精简为几个部分。生成了一个新的项目,有最新的RN版本等

用反应导航构建了一个最小的项目,但它崩溃了。

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

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

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

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


0
投票

在我的例子中,我没有正确使用字体的后记名称。无论如何,这有点误导

我曾经从字体文件的信息中获取字体的后记名称,这意味着点击

CMD+I
,但不知何故,这不是获取它的正确方法。 您需要使用 Mac 上的 Font Book 应用程序。

误导性的部分是,它过去从应用程序第一次启动时就无法被识别,现在它可以正确加载,但不知何故在后台然后再次前台,你失去了字体命名的一致性

附言:

为了正确的跨平台使用,您应该知道在Android上,字体系列名称将是不带扩展名的字体文件的名称。在 iOS 上,字体系列名称将从字体文件本身读取(称为 postscript 名称)。所以我强烈建议您将所有字体文件重命名为与 PostScript 名称相同,以便系列名称在两个平台上保持一致

© www.soinside.com 2019 - 2024. All rights reserved.