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

Swift中自定义字体真机调试变回系统字体,如何解决?

解决iOS真机自定义字体不生效的问题

这个问题我碰到好多次了,真机调试时自定义字体失效是iOS开发里挺常见的坑,给你列几个最有效的排查和解决步骤:

  • 检查字体文件的Target Membership
    这是最容易忽略的点!Mac端运行正常是因为资源能被读取,但真机需要确保字体文件被正确关联到你的app target。操作方法:选中项目里的字体文件,打开右侧的属性检查器(Inspector),在「Target Membership」区域勾选你的应用target,确保它被打进制包。

  • 确认Info.plist里的字体文件名完全匹配
    iOS真机对文件名的大小写和后缀非常敏感,Mac端可能宽松一些。你要保证Fonts provided by application数组里的每一项,都和字体文件的实际名称完全一致,包括.ttf/.otf这些后缀,大小写也不能错。比如文件是CustomFont-Bold.ttf,就不能写成customfont-bold.ttf。

  • 验证字体的真实内部名称
    有时候字体文件的文件名和它内部注册的字体名称不一样!这时候你需要用代码打印出设备上所有可用的字体,找到它的真实名字:

    // 在ViewController的viewDidLoad里添加这段代码
    override func viewDidLoad() {
        super.viewDidLoad()
        // 打印所有可用字体
        for familyName in UIFont.familyNames {
            print("字体家族:\(familyName)")
            for fontName in UIFont.fontNames(forFamilyName: familyName) {
                print("  字体名称:\(fontName)")
            }
        }
    }
    

    运行后看控制台输出,找到你要的字体对应的真实名称(比如文件名是MyFont.ttf,但真实名称可能是MyFont-Regular),然后在代码里用这个真实名称来设置字体,而不是文件名。

  • 清理缓存并重启Xcode
    有时候Xcode的缓存会导致资源没有正确打包。执行这几步:

    1. 按Cmd+Shift+K清理项目
    2. 按Cmd+Option+Shift+K彻底清理构建缓存
    3. 关闭Xcode,重新打开后再build到真机
  • 检查字体是否被打包进app包
    右键项目里的Products文件夹下的app文件,选择「Show in Finder」,然后右键app包选择「Show Package Contents」,看看里面有没有Fonts文件夹,你的字体文件是否在里面。如果没有,说明字体文件没有被正确添加到target,回到第一步重新设置。

  • 确认设备系统支持该字体
    部分特殊格式的字体(比如某些OTF变体)可能在旧版本iOS上不支持。如果你的测试设备系统版本比较老,可以尝试升级系统,或者换用兼容性更好的字体文件(比如转换成TTF格式)。

内容的提问来源于stack exchange,提问作者Siratee K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:09:27