You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI项目迁移后自定义字体无法加载的排查求助

迁移SwiftUI项目后自定义字体无法加载的排查要点

遇到这种迁移项目后字体失效的情况确实挺头疼的,我帮你梳理几个容易被忽略的细节,说不定问题就出在这儿:

  • 确认字体的PostScript名称与配置一致
    这是最常见的坑!很多人误以为Info.plist里填的是字体文件名,但实际上系统识别的是字体内部的PostScript名称,而非文件名。比如你的字体文件叫MyFont-Regular.ttf,但内部的PostScript名称可能是MyFontRegular。
    你可以用两种方式验证:

    1. 用Mac的「字体册」打开字体,右键点击字体→「显示字体信息」,查看PostScript名称;
    2. 在App的init方法里添加这段代码,打印所有可用字体:
      override init() {
          super.init()
          for family in UIFont.familyNames.sorted() {
              let fontNames = UIFont.fontNames(forFamilyName: family)
              print("字体家族:\(family) → 可用字体名:\(fontNames)")
          }
      }
      
      运行项目后查看控制台,找到你的字体对应的名称,确保Info.plist里的文件名和代码中Font.custom(_:size:)用的名称都匹配。
  • 检查单个字体文件的Target Membership
    你提到勾选了文件夹的Target Membership,但文件夹里的单个字体文件可能没有自动继承这个设置。进入每个字体文件的「检查器」(右侧面板),确认主项目的Target是勾选状态——有时候复制文件夹时,内部文件的Target会默认不勾选。

  • 清理Xcode缓存并重建项目
    迁移项目后Xcode的缓存很容易出问题,试试这些操作:

    • 清理项目:按下Command + Shift + K;
    • 删除Derived Data:打开Xcode→「Settings」→「Locations」,点击Derived Data旁的箭头,删除当前项目的缓存文件夹;
    • 重启Xcode和模拟器/真机,然后重新Build项目。
  • 验证字体文件的完整性
    复制文件过程中可能出现文件损坏的情况,把原项目中能正常工作的字体文件重新复制到新项目中,替换现有文件,确保文件本身没有问题。

  • 确认Info.plist的键和配置正确
    确保你使用的是系统识别的键名Fonts provided by application(注意是英文键,不要用本地化后的名称),数组中的每一项都是字体的完整文件名(包括后缀,比如.ttf或.otf),不要遗漏后缀。

先从检查PostScript名称开始排查,这解决了大部分迁移后字体失效的问题。如果还不行,再一步步验证上面的其他要点,应该能找到问题所在。

内容的提问来源于stack exchange,提问作者Jacob F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:33:12