【问题标题】:Custom Fonts not showing on font family list自定义字体未显示在字体系列列表中
【发布时间】:2020-06-10 14:16:10
【问题描述】:

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

直到今天,我在应用自定义字体时都没有遇到任何问题。 我正在尝试将自定义字体应用于名为“textLabel”的标签。 让我先告诉你我是如何尝试的,然后请告诉我哪里出了问题。

  • 使用情节提要
  • 我想将名为“myFont.ttf”的自定义字体用于名为“textLabel”的标签。
  • 我使用这个选项在 Xcode 中删除了字体文件。
  • 我去了 info.plist 让 Xcode 知道我提供了自定义字体。
  • 我打开 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 次新文件来测试这个字体),我也尝试了各种字体,但同样的事情发生了。

【问题讨论】:

    标签: ios swift xcode swift5 xcode11


    【解决方案1】:

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

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

    现在检查控制台输出,查找新字体的“系列”和“字体”名称。将显示为与您的新字体系列相对应的“字体”名称(可能有多个“字体”与您的新字体“系列”相关联)传递给let myNewFont = UIFont(name: "font_name_from_console_output", size: 22),您应该可以开展业务了!

    【讨论】:

    • 感谢您的回答,感谢您,我现在知道如何检查我的字体系列了!我试过你的,甚至寻求苹果支持的帮助,但我最终格式化了我的设备,最后它工作了。我想我的mac书是问题所在。无论如何,非常感谢! :)
    • 很高兴听到你把它修好了。永远不会猜到这一点。快乐编码:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2015-12-21
    • 2011-09-09
    • 2012-05-20
    相关资源
    最近更新 更多