我想将attributesstring设置为UILabel
。所以我用这种方式定义了属性。
let attribute1:[String:Any]=[
NSForegroundColorAttributeName: UIColor.init(colorLiteralRed: 120.0/255, green: 173.0/255, blue: 194.0/255, alpha: 1.0),
NSFontAttributeName:UIFont.init(name: "Bariol_Bold", size: 15.0)!]
let attributedStringGreeting=NSAttributedString.init(string: welcomeMessage, attributes: attribute1)
但是我收到了这个错误:
NSFontAttributeName:UIFont.init(name: "Bariol_Bold", size: 15.0)!]
这是否意味着我的自定义字体没有占用?但是,当我从IB中设置字体时,它会显示出来。
致命错误:在解包可选值时意外发现nil
我该如何解决这个问题?请帮帮我。
答案 0 :(得分:8)
如果实际的字体名称与文件名不同,通常会发生这种情况,所以问题就是如何查找字体名称。
采取这一步骤,
现在运行以下代码,
for fontFamilyName in UIFont.familyNames{
for fontName in UIFont.fontNames(forFamilyName: fontFamilyName){
print("Family: \(fontFamilyName) Font: \(fontName)")
}
}
现在查看控制台中的输出,此处打印所有可用字体,检查所提供字体的实际字体名称。现在只需使用与下面相同的字体名称:
现在,请使用UIFont.init(name: "Actual Font name comes here", size: 15.0)!]
答案 1 :(得分:4)
问题在于名称。每次文件名和字体名称都不相似时。要知道确切的字体名称,可以使用以下函数。
func printMyFonts() {
print("--------- Available Font names ----------")
for name in UIFont.familyNames {
print(name)
print(UIFont.fontNames(forFamilyName: name))
}
}
希望这有帮助!
答案 2 :(得分:1)
试试这个
let attribute1:[String:Any] = [NSFontAttributeName: UIFont(name: "Bariol-Bold", size: 18)! ,
NSForegroundColorAttributeName : UIColor.init(colorLiteralRed: 120.0/255, green: 173.0/255, blue: 194.0/255, alpha: 1.0)]
let attributedStringGreeting=NSAttributedString.init(string: welcomeMessage, attributes: attribute1)