iOS项目中自定义字体在Interface Builder可见但代码无法列出
iOS自定义字体在Interface Builder可见但代码中无法找到的解决方案
兄弟,我太懂这种崩溃感了——IB里明明能选到字体,代码遍历就是找不到!之前踩过一模一样的坑,给你几个必查的关键点,按顺序来基本能解决:
第一步:确认字体的真实内部名称(最关键!)
90%的情况都是这个问题:我们常误以为字体文件名就是代码里要用的名称,但OTF/TTF字体有自己的内部PostScript名称,和文件名可能完全不一样。比如你的Quicksand_Dash.otf,内部可能叫Quicksand-Dash(下划线变横杠)。
怎么查?- 打开Mac的「字体册」,找到你的Quicksand字体
- 右键点击字体 → 「显示字体信息」
- 找到「PostScript名称」,这个才是代码里能识别的真实名称
你甚至可以跳过遍历,直接用这个名称初始化字体:
let boldFont = UIFont(name: "Quicksand-Bold", size: 17)第二步:核对Info.plist的配置细节
确保「Fonts provided by application」里的条目完全匹配字体文件名(包括后缀.otf),iOS是大小写敏感的!比如不能把Quicksand-Bold.otf写成quicksand-bold.otf,也不能漏了.otf后缀。另外仔细检查条目里有没有多余的空格,有时候复制粘贴会带隐藏空格导致不匹配。第三步:确认字体真的被打包进App了
别光看「Copy Bundle Resources」里有字体,还要检查:- 选中字体文件,右侧Xcode检查器里,你的主Target的「Target Membership」复选框是否勾选(拖入文件时可能没默认勾选)
- 验证打包结果:点击Xcode顶部的「Product」→「Show Build Folder in Finder」,找到生成的
.app文件,右键「显示包内容」,看看里面有没有你的OTF文件
第四步:清理缓存重新构建
Xcode的缓存有时候会搞出莫名其妙的问题,按以下步骤来:- 按
Cmd+Shift+K清理Build Folder - 删除模拟器/设备上的App
- 重启Xcode(可选,但有时候能解决顽固问题)
- 重新Run项目
- 按
如果以上都试过还是不行,你可以试试把字体文件名改成和PostScript名称完全一致,再重新配置plist和Copy Bundle Resources,有时候能解决一些奇怪的匹配问题。
内容的提问来源于stack exchange,提问作者Emre Önder




