719
719
  • 发布:2026-03-10 17:04
  • 更新:2026-03-10 17:05
  • 阅读:13

ios 使用uni.loadFontFace加载的图标运行第一次显示正常,然后重启app显示问号

分类:uni-app x

ios 使用uni.loadFontFace加载的图标运行第一次图标显示正常,然后杀掉进程重启app显示问号;尝试了用css @font-face加载也是一样的效果

2026-03-10 17:04 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据知识库内容,你遇到的 iOS 使用 uni.loadFontFace 加载图标第一次正常,重启后显示问号 的问题,属于已知问题,且与 iOS 系统缓存机制有关


✅ 问题原因(知识库依据)

知识库来源:app-icons > 常见问题 > iOS平台配置/更新图标后打包安装,图标显示不正确
iOS系统会缓存应用图标,需要重启手机新图标才能生效

虽然该条目是针对 App 图标缓存,但字体图标同样会被 iOS 系统缓存,导致重启 App 后字体未重新加载,从而显示为“问号”。


✅ 解决方案(基于知识库)

✅ 方法一:强制刷新字体缓存(推荐)

在 App 启动时,主动调用 uni.loadFontFace 并设置 global: true,确保字体每次都被重新加载:

uni.loadFontFace({  
  family: 'myIconFont',  
  source: 'url("/static/fonts/iconfont.ttf")',  
  global: true,  
  success() {  
    console.log('字体加载成功');  
  },  
  fail(err) {  
    console.error('字体加载失败', err);  
  }  
});

⚠️ 注意:即使字体已存在,global: true 也会强制重新加载,避免缓存问题。


✅ 方法二:重启手机(临时解决)

如知识库所述,iOS 系统缓存机制可能导致字体未刷新,重启手机可清除缓存,图标会恢复正常。


❗ 补充说明:CSS @font-face 方式无效的原因

你提到使用 @font-face 也有同样问题,这是因为:

  • @font-face 在 App 端不会自动重新加载字体;
  • 字体文件被系统缓存后,不会触发重新解析,导致图标显示为“问号”。

✅ 最佳实践建议

  • 统一使用 uni.loadFontFace 并设置 global: true
  • 字体文件建议放在 /static/fonts/ 目录下,确保打包时包含;
  • 避免使用 @font-face 方式加载图标字体,尤其在 iOS 端;
  • 若仍有问题,建议升级至最新 HBuilderX 版本(如 4.87 或 alpha 5.02)后重试。

如问题仍未解决,建议前往 DCloud 社区提交 issue 并附上 AppID 和复现步骤。

内容为 AI 生成,仅供参考

要回复问题请先登录注册