ios - 当应用程序被拉到前台时,为什么我在 React Native 中的自定义字体恢复为系统字体?
问题描述
我有一个相对较小的应用程序,由 StackNavigator 管理几个视图。
我有三种自定义字体 (TTF),在整个应用程序中使用。
该应用程序在 Android 和 iOS 的模拟器上运行良好 - 自定义字体按预期显示。
我现在已经开始将我的应用程序提交给 TestFlight 并在设备上运行它——到目前为止,我是两部独立的 iPhone。
首次加载时,应用程序按预期工作并且字体正确显示。
但是,当应用程序进入后台,然后再次被拉入前台时,字体会恢复为系统字体。(从后台拉出的页面实际上看起来是正确的,当堆栈切换到另一个视图时,这些字体是不正确的。)
如果我强制关闭应用程序,然后重新启动,一切都会再次正常,直到它下次进入后台。
关于为什么这些资源没有显示的任何想法?
解决方案
回过头来为未来的读者回答这个问题:
我将我的应用程序分解为多个部分。用最新的RN版本等生成了一个新项目。
用 react-navigation 构建了一个最小的项目,但它崩溃了。
删除导航,并使用条件渲染来显示页面,它崩溃了。
进一步剥离,最终发现在 XCode 中设置显示名称是罪魁祸首:我的应用名称有一个“?” (问号)在里面。
iOS 指南说这没问题,部署时没有任何问题,但是关于 React Native 和使用这个角色重新加载上下文的一些东西破坏了一些东西。我的直觉说,一些查找字体文件的通配程序中的问号导致它丢失。
删除了问号,它可以很好地回到前台。
推荐阅读
- php - SQLSTATE [HY000]:一般错误:旧客户端驱动程序无法识别 4078 排序规则
- bash - Match url with regex containing forward slash
- python - Annotation of root parent on django recursive model
- python-2.7 - Apache Beam Hello World 示例 ContextualVersionConflict
- symfony - Symfony:如果变量为空或假,则取消扩展
- spring-boot - Spring Boot 中用于 rabbitmq 的 SimpMessagingTemplate 的测试用例
- google-cloud-platform - 无法激活免费的 Google Cloud 试用版
- java - Log4j StackOverflowError
- node.js - Jimp Read Url => Error: unable to verify the first certificate in nodejs
- c# - XmlElement 中的 C# XML 序列化命名空间