iOS中使用Swift设置自定义字体失败,求排查解决
自定义TTF字体加载失败的排查解决方法
你遇到的问题是自定义TTF字体无法被iOS项目识别,导致UIFont(name: "myFont", size: 54)返回nil,且遍历字体列表找不到目标字体,以下是几个必查的关键点:
1. 确认字体文件已关联到Target
选中你的ttf字体文件,打开右侧的File Inspector,检查Target Membership是否勾选了当前项目的主Target。如果没勾选,编译时字体不会被打包进App,自然无法加载。
2. 检查Info.plist的字体名称是否正确
Info.plist中Fonts provided by application数组里填写的必须是字体的内部真实名称,不是文件名。比如文件名是myFont.ttf,实际字体名称可能是MyFont-Regular或其他:
- 快速查看方式:双击字体文件打开Font Book,窗口顶部显示的名称就是真实字体名
- 命令行验证:在终端执行
输出结果里的fc-scan /你的字体文件路径/myFont.ttf | grep "fullname"fullname字段就是你需要填进Info.plist和用在UIFont(name:)里的名称。
3. 验证字体文件的有效性
如果字体文件损坏、不完整,或者是iOS不支持的字体格式(比如部分特殊TTF变种),也会导致加载失败。可以尝试替换为官方下载的字体文件,或者用Font Book打开确认字体能正常显示。
4. 清理缓存重新编译
iOS项目的构建缓存可能会导致字体未被正确更新,执行以下操作后重新编译:
- 按
Cmd+Shift+K清理项目 - 按
Cmd+Shift+Option+K清理构建文件夹 - 重启Xcode后重新运行项目
你之前用的字体遍历代码是正确的,排查完以上几点后,重新运行应该能在控制台输出里找到你的自定义字体:
for fontFamily in UIFont.familyNames { print(UIFont.fontNames(forFamilyName: fontFamily)) }
内容的提问来源于stack exchange,提问作者liangdapang
相关产品推荐
相关产品推荐

