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

Posted

技术标签:

【中文标题】自定义字体未显示在字体系列列表中【英文标题】: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”字体。

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

通过使用代码
    在数字 3 之前与上述过程相同。 我在 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(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书是问题所在。无论如何,非常感谢! :) 很高兴听到你把它修好了。永远不会猜到这一点。快乐编码:)

以上是关于自定义字体未显示在字体系列列表中的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight 中未显示某些自定义字体

WPF UserControl vb.net 不会显示自定义字体系列

如何在 R 中自定义 Facet_Grid 字体标签

可以在 IB 的导航栏中自定义提示字符串的字体吗?

自定义字体未在用作背景图像的 SVG 模式中显示

在 Maps V2 中使用自定义字体