SwiftUI不会显示自定义字体

时间:2019-11-14 19:51:07

标签: ios swift swiftui

我目前正在尝试向项目中添加自定义字体,但是我不知怎么工作。

我已经将.otf文件添加到字体文件夹中,检查它是否以我的项目为目标,并将Fonts provided by application添加到Info.plist中。

struct ContentView: View {
    var body: some View {
        Text("CLOSEST")
          .foregroundColor(Color("primary"))
          .font(Font.custom("HelveticaNowDisplayBold", size: 60))
    }
}

5 个答案:

答案 0 :(得分:3)

对于那些不再有应用程序/场景委托的人来说。在你的 App.swift 文件中

init() {
        for family in UIFont.familyNames.sorted() {
            let names = UIFont.fontNames(forFamilyName: family)
            print("Family: \(family) Font names: \(names)")
        }
    }

会起作用

答案 1 :(得分:1)

如果您确保Info.plist使用的文件名正确

enter image description here

,并且该字体在应用程序的目标中可用。

enter image description here

您还需要确保您使用正确的名称访问字体。

检查字体名称的一种简便方法是在didFinishLaunchingWithOptions之前的return true中将以下内容添加到AppDelegate中。

for family in UIFont.familyNames.sorted() {
    let names = UIFont.fontNames(forFamilyName: family)
    print("Family: \(family) Font names: \(names)")
}

这将按族和名称列出所有字体。

当我对字体进行处理时(我已经添加了与您相同的字体),我在控制台中的可用字体列表中找到了以下内容(请参见上面的屏幕截图):

Family: Helvetica Now Display Font names: ["HelveticaNowDisplay-Bold"]

您的字体可能要使用其他名称。

以下测试代码产生:

struct ContentView: View {
    var body: some View {
        Text("Hello")
            .foregroundColor(.blue)
            .font(Font.custom("HelveticaNowDisplay-Bold", size: 60))
    }
}

enter image description here

有关添加自定义字体的更多信息,请参阅Apple的documentation

答案 2 :(得分:1)

我遇到了同样的问题,

当我省略“ -Regular”时它对我有用, 但是我在info.plist中用它写的。

答案 3 :(得分:1)

您需要包含字体的扩展名(例如 .ttf)。我在 youtube 上看到了一些教程,其中没有包含它,但对我来说,没有它就行不通。

答案 4 :(得分:0)

我有完全相同的问题。以下步骤为我修复了该问题。我目前正在使用Xcode 11.4.1

  1. 创建一个情节提要,添加标签,然后在检查器中选择您的字体作为标签的字体。
  2. 在模拟器中构建应用
  3. 使用以下方法检查已安装的字体:

    for family in UIFont.familyNames.sorted() {
        let names = UIFont.fontNames(forFamilyName: family)
        print("Family: \(family) Font names: \(names)")
    }
    
  4. 如果它出现了,您还可以以编程方式使用它

这里也是Common mistakes with adding custom fonts

的列表