自定义字体错误
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,我刚刚尝试了给定的字体,它的工作正常,没有问题,给出了我遵循的步骤:
- 将
Comfortaa-Bold.ttf
、Comfortaa-Light.ttf
、Comfortaa-Regular.ttf
字体文件添加到项目中。
2.Add info.plist
文件中的字体条目
确保项目目标中添加的字体。
之后,使用下面给出的 Swift
代码在 UILabel
和 UISegmentedControl
上应用字体:
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:
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,我刚刚尝试了给定的字体,它的工作正常,没有问题,给出了我遵循的步骤:
- 将
Comfortaa-Bold.ttf
、Comfortaa-Light.ttf
、Comfortaa-Regular.ttf
字体文件添加到项目中。
2.Add info.plist
文件中的字体条目
确保项目目标中添加的字体。
之后,使用下面给出的 Swift
代码在 UILabel
和 UISegmentedControl
上应用字体:
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: