TL;DR:在童话板/xib.中使用自定义字体之前不能以编程方式使用它们
注意:我检查了https://stackoverflow.com/questions/46303443/xcode-9-custom-fonts-not-working,尝试了答案,但它们没有起作用。我还确保他们是目标会员。
我注意到了一个奇怪的错误,在更改段控制标题(一种自定义字体)时:
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:


下面是问题所在;如果我在故事板中使用它,它将显示在字体系列中:

但是如果没有,它就没有显示-here,我已经更改为light,粗体已经消失了,并且不能以编程的方式使用。

我使用的是Xcode版本9.0 (9A235)和Swift 4。我还检查了OpenRadar,无法找到关于这方面的提交。
提到的字体:康福塔
发布于 2018-01-15 18:21:14
@EDUsta,我只是试着用给定的字体,它的工作还好,没有问题,给出了我遵循的步骤:
Comfortaa-Bold.ttf、Comfortaa-Light.ttf、Comfortaa-Regular.ttf字体文件。

2.在info.plist文件中添加字体条目

确保在项目目标中添加的字体。
之后,使用下面给出的UILabel和UISegmentedControl代码在Swift和Swift上应用字体:
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)它的工作非常完美,您可以在下面的屏幕截图图像中签入:

供您参考,我将添加完整的项目这里:
发布于 2018-01-15 16:21:09
我也有同样的问题。我无法通过编程添加完全相同的字体系列(Comfortaa) --每次都会崩溃,但一旦我在启动屏幕中添加标签并将字体设置为Comfotaa,从代码加载的字体工作正常,不会崩溃。因此,我的解决方案是添加3个标签的字体,如- Comfortaa,Comfortaa正则,Comfortaa在启动屏幕和设置“隐藏”标志的真。这样,我就可以编程地使用它们了。
https://stackoverflow.com/questions/46604829
复制相似问题