自定义字体未显示在字体系列列表中

时间:2020-06-10 14:16:10

标签: ios swift xcode swift5 xcode11

我在macOS Catalina上使用Swift 5和Xcode 11.4.1。

我今天在应用自定义字体之前没有问题。 我正在尝试将自定义字体应用于名为“ textLabel”的标签。 让我向您展示我如何尝试,然后告诉我哪里出了问题。

  • 使用情节提要
  • 我想将名称为“ myFont.ttf”的自定义字体用于名为“ textLabel”的标签。
  • 我使用此选项在Xcode中删除了字体文件。 Option Screenshot
  • 我去了info.plist,让Xcode知道我提供了自定义字体。 info.plist screenshot
  • 我打开main.storyboard,转到属性检查器,然后选择标签的字体作为自定义样式。
  • 我在字体家族列表中找不到“ myFont”字体。 <<这里的问题。

所以我以编程方式尝试了另一种方式。

  • 使用代码
  1. 与上述相同的过程,直到数字3。
  2. 我在viewController.swift文件中编写了这段代码。
import UIKit

class ViewController: UIViewController {
    
  @IBOutlet weak var textLabel: UILabel!
   
  override func viewDidLoad() {
    super.viewDidLoad()
        
    textLabel.font = UIFont(name: "myFont.ttf", size: 22)
  }
}
  1. 我运行了该应用,它只显示正常的系统字体。

我反复尝试了两次(甚至我创建了5次新文件来测试这种字体),还尝试了各种字体,但还是发生了同样的事情。

1 个答案:

答案 0 :(得分:1)

问题在于您在声明UIFont中为UIFont(name: "myFont.ttf", size: 22)提供的名称。您不应提供名称myFont,而应提供字体的实际名称,例如:Avalon。您可以通过列出所有字体列表来获取字体。像这样:

for family: String in UIFont.familyNames {
    print("\(family)")
    for names: String in UIFont.fontNames(forFamilyName: family) {
        print("== \(names)")
    }
}

现在检查控制台输出,查找新字体的“ family”和“ font”名称。将显示为与您的新字体系列相对应的“字体”名称的任何内容传递给let myNewFont = UIFont(name: "font_name_from_console_output", size: 22),您应该已经营业了! >