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:
所以这是抓住;如果我在故事板中使用它,它将显示在字体系列中:
但如果不是,那么它就没有显示 - 我已经改变了光线并且粗体消失了 - ,并且不能以编程方式使用。
我正在使用Xcode版本9.0(9A235)和Swift 4.我还检查了OpenRadar,但无法找到有关此内容的提交。
提到的字体:Comfortaa
答案 0 :(得分:2)
@EDUsta, I just tried with given font and its work ok, no issue in it, giving the step which i followed:
Comfortaa-Bold.ttf
, Comfortaa-Light.ttf
, Comfortaa-Regular.ttf
Font files to project.2.Add the entries of Fonts in info.plist
file
Make sure the font added in project target.
After it, apply the fonts on UILabel
and UISegmentedControl
using Swift
code given below:
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)
its work perfectly, you can check in below screenshot image:
For your reference i am adding the complete project here:
答案 1 :(得分:1)
我有同样的问题。我无法以编程方式添加完全相同的字体系列(Comfortaa) - 每次崩溃时,但是一旦我在启动屏幕中添加标签并将字体设置为Comfotaa-Bold,从代码加载的字体工作正常并且不会崩溃。所以我的解决方案是添加3个带有字体的标签,例如 - Comfortaa Bold,Comfortaa Regular,Comfortaa Light在发布屏幕中设置"隐藏"国旗上的真实。通过这种方式,我可以以编程方式使用所有这些内容。