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

Xcode14.1+SwiftUI自定义UIFont失败,求解决方案

解决SwiftUI项目中Poppins自定义字体加载失败及预览报错问题

针对你在Xcode14.1 SwiftUI项目中添加Poppins字体遇到的字体不加载、视图不渲染、预览报错问题,按以下步骤排查解决:

一、修复字体不加载问题(核心)

1. 检查字体文件的Target Membership

选中每个Poppins的.ttf文件,查看右侧Xcode面板的Target Membership区域,确保你的项目主Target处于勾选状态。未勾选的字体文件不会被打包进App,自然无法加载。

2. 验证Info.plist路径与实际文件位置一致

  • 确认你的Fonts是黄色组(而非蓝色文件夹引用),且所有.ttf文件确实存放在项目根目录的Fonts文件夹中。
  • 检查UIAppFonts数组里的路径拼写:比如Fonts/Poppins-Regular.ttf的大小写、文件名后缀必须和实际文件完全匹配,不能有空格或拼写错误。

3. 使用字体的内部PostScript名称(而非文件名)

很多字体的文件名和内部名称不一致,比如Poppins-Regular.ttf的内部名称可能是Poppins Regular(无连字符)。你需要用正确的内部名称调用:

  • 调整printFonts的调用时机:不要在App的init里调用(此时字体还未完成加载),改为在主视图的onAppear中触发:
    struct ContentView: View {
        var body: some View {
            Text("Hello!")
                .onAppear {
                    printFonts()
                }
        }
        
        func printFonts() {
            let fontFamilyNames = UIFont.familyNames
            for familyName in fontFamilyNames {
                print("----------")
                print("Font Family Name -> [\(familyName)]")
                let names = UIFont.fontNames(forFamilyName: familyName)
                print("Font Names ==> [\(names)]")
            }
        }
    }
    
  • 运行App后,在控制台找到Poppins家族下的具体字体名称,比如Poppins-Regular或Poppins Regular,然后在代码中使用这个名称:
    Text("Hello!")
        .font(Font.custom("Poppins Regular", size: 18)) // 替换为实际打印出的名称
    
  • 也可以直接用Mac字体册打开.ttf文件,查看字体信息里的PostScript名称,这就是代码中需要用的字符串。

二、解决Xcode预览报错「ambiguous use of 'font'」

这个错误通常是命名冲突导致的:

  • 检查你的代码中是否有自定义的font扩展方法,比如给View添加了同名的font方法,和SwiftUI原生方法冲突。
  • 如果项目中同时导入了UIKit和SwiftUI,避免直接混用类型,明确区分调用的是SwiftUI的Font还是UIKit的UIFont。
  • 尝试清理项目缓存:执行Command+Shift+K清理构建文件夹,然后重启Xcode,再重新运行预览。

额外验证步骤

  1. 重启Xcode,清理构建文件夹(Command+Shift+K)后重新构建。
  2. 检查App的打包内容:选择Product -> Show Build Folder in Finder,找到App包,右键显示包内容,确认Fonts文件夹下的所有.ttf文件都存在。

内容的提问来源于stack exchange,提问作者Justin Erswell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:05:37