You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS项目中自定义字体在Interface Builder可见但代码无法列出

iOS自定义字体在Interface Builder可见但代码中无法找到的解决方案

兄弟,我太懂这种崩溃感了——IB里明明能选到字体,代码遍历就是找不到!之前踩过一模一样的坑,给你几个必查的关键点,按顺序来基本能解决:

  • 第一步:确认字体的真实内部名称(最关键!)
    90%的情况都是这个问题:我们常误以为字体文件名就是代码里要用的名称,但OTF/TTF字体有自己的内部PostScript名称,和文件名可能完全不一样。比如你的Quicksand_Dash.otf,内部可能叫Quicksand-Dash(下划线变横杠)。
    怎么查?

    1. 打开Mac的「字体册」,找到你的Quicksand字体
    2. 右键点击字体 → 「显示字体信息」
    3. 找到「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」里有字体,还要检查:

    1. 选中字体文件,右侧Xcode检查器里,你的主Target的「Target Membership」复选框是否勾选(拖入文件时可能没默认勾选)
    2. 验证打包结果:点击Xcode顶部的「Product」→「Show Build Folder in Finder」,找到生成的.app文件,右键「显示包内容」,看看里面有没有你的OTF文件
  • 第四步:清理缓存重新构建
    Xcode的缓存有时候会搞出莫名其妙的问题,按以下步骤来:

    1. Cmd+Shift+K清理Build Folder
    2. 删除模拟器/设备上的App
    3. 重启Xcode(可选,但有时候能解决顽固问题)
    4. 重新Run项目

如果以上都试过还是不行,你可以试试把字体文件名改成和PostScript名称完全一致,再重新配置plist和Copy Bundle Resources,有时候能解决一些奇怪的匹配问题。

内容的提问来源于stack exchange,提问作者Emre Önder

火山引擎 最新活动