提问者:小点点

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


我在macOS Catalina上使用的是Swift5和Xcode11.4.1。

我一直没有问题应用自定义字体直到今天。 我正在尝试将自定义字体应用于一个名为“textlabel”的标签。 让我先告诉你我是怎么试的,然后请告诉我出了什么问题。

  • 通过使用情节提要
    1. 我想对名为“TextLabel”的标签使用名为“MyFont.ttf”的自定义字体。
    2. 我用这个选项删除了Xcode中的字体文件。 选项屏幕截图
    3. 我转到info.plist让Xcode知道我提供了自定义字体。 info.plist屏幕截图
    4. 我打开Main.Storyboard,转到属性检查器并选择标签的字体作为自定义样式。
    5. 我在字体系列列表中找不到“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)
}

}

我运行了应用程序,它显示只是正常的系统字体。

我一遍又一遍地尝试这两种方式(甚至我创建了5次新文件来测试这个字体),我也尝试了各种字体,但同样的事情还是发生了。 谁能告诉我解决办法吗? 很抱歉,我是一个新手,所以请理解。


共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'名称。 将显示为与新字体家族相对应的'font'名称(可能有多个'font'与新字体家族相关联)的任何内容传递给,让myNewFont=UIFont(name:“font_name_from_console_output”,size:22),您就可以开始工作了!