自定义字体错误

Custom Fonts Bug

TL;DR:在 Storyboard/xib.

中使用自定义字体之前,无法以编程方式使用它们

注意:我已经检查过 this,尝试了答案,但没有用。我还确保他们是目标会员。

我在将段控件标题更改为自定义字体时注意到一个奇怪的错误:

segmentedControl.titleTextAttributes = NSDictionary(objects: [UIFont.init(name: "Comfortaa-Regular",
                                                                          size: UIFont.systemFontSize)!,
                                                              UIColor.white],
                                                    forKeys: [NSAttributedStringKey.font as NSCopying,
                                                              NSAttributedStringKey.foregroundColor as NSCopying]) as? [AnyHashable : Any]

找不到字体,解包失败。但是在故事板中可以看到字体。

它已正确添加到项目中,这是 CopyBundle 和 InfoList:

这就是问题所在;如果我在 Storyboard 中使用它,它会显示在字体系列中:

但如果不是,则不显示-这里我改成了浅色,粗体消失了-,不能编程使用

我正在使用 Xcode 版本 9.0 (9A235) 和 Swift 4。我还检查了 OpenRadar,但找不到与此相关的提交。

提到的字体:Comfortaa

我也遇到了同样的问题。我无法以编程方式添加完全相同的字体系列 (Comfortaa) - 每次它崩溃时,但是一旦我在启动屏幕中添加标签并将字体设置为 Comfotaa-Bold,从代码加载的字体工作正常并且不会崩溃。所以我的解决方案是在启动屏幕中添加 3 个带有字体的标签,例如 - Comfortaa Bold、Comfortaa Regular、Comfortaa Light,并将 "hidden" 标志设置为 true。这样我就可以以编程方式使用所有这些。

@EDUsta,我刚刚尝试了给定的字体,它的工作正常,没有问题,给出了我遵循的步骤:

  1. Comfortaa-Bold.ttfComfortaa-Light.ttfComfortaa-Regular.ttf 字体文件添加到项目中。

2.Add info.plist 文件中的字体条目

确保项目目标中添加的字体。

之后,使用下面给出的 Swift 代码在 UILabelUISegmentedControl 上应用字体:

   let fontFirst = UIFont(name: "Comfortaa-Bold", size: 16.0)!
    segmentFont.setTitleTextAttributes([NSAttributedStringKey.font : fontFirst, NSAttributedStringKey.foregroundColor : UIColor.red],
                                       for: .normal)

    labelBold.font = UIFont(name: "Comfortaa-Bold", size: 16.0)
    labelLight.font = UIFont(name: "Comfortaa-Light", size: 16.0)
    labelRegular.font = UIFont(name: "Comfortaa-Regular", size: 16.0)

它运行完美,您可以查看下面的屏幕截图:

为了您的参考,我添加了完整的项目here: