自定义字体在 swift 3 中变为 nil 值
custom font becomes a nil value in swift 3
我想将 attributedstring 设置为我的 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 设置字体时它显示了。
fatal error: unexpectedly found nil while unwrapping an Optional value
我该如何解决这个问题?请帮助我。
试试这个
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)
如果实际的字体名称与文件名不同,这通常会发生,所以问题是如何找到字体名称。
执行此步骤,
- 将所有字体文件添加到您的包中
- 在 info.plist 键下添加所有字体文件列表:"Font Provided By Application"
现在运行下面的代码,
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)!]
问题出在名字上。每次文件名和字体名都没有必要相似。要知道确切的字体名称,您可以使用以下函数。
func printMyFonts() {
print("--------- Available Font names ----------")
for name in UIFont.familyNames {
print(name)
print(UIFont.fontNames(forFamilyName: name))
}
}
希望对您有所帮助!
我想将 attributedstring 设置为我的 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 设置字体时它显示了。
fatal error: unexpectedly found nil while unwrapping an Optional value
我该如何解决这个问题?请帮助我。
试试这个
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)
如果实际的字体名称与文件名不同,这通常会发生,所以问题是如何找到字体名称。
执行此步骤,
- 将所有字体文件添加到您的包中
- 在 info.plist 键下添加所有字体文件列表:"Font Provided By Application"
现在运行下面的代码,
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)!]
问题出在名字上。每次文件名和字体名都没有必要相似。要知道确切的字体名称,您可以使用以下函数。
func printMyFonts() {
print("--------- Available Font names ----------")
for name in UIFont.familyNames {
print(name)
print(UIFont.fontNames(forFamilyName: name))
}
}
希望对您有所帮助!