我已经为此苦苦挣扎了一段时间,fontDescriptor.withSymbolicTraits
每当我尝试使用Bold或Italic时它都会返回 nil 。
我在下面使用这个代码:
func withTraits(traits:UIFontDescriptor.SymbolicTraits) -> UIFont {
let descriptor = fontDescriptor.withSymbolicTraits(traits)
return UIFont(descriptor: descriptor!, size: 0) //size 0 means keep the size as it is }
func bold() -> UIFont {
return withTraits(traits: .traitBold) }
func italic() -> UIFont {
return withTraits(traits: .traitItalic) }
但是应用程序停止并显示此错误(这指向fontDescriptor.withSymbolicTraits
):
致命错误:在展开可选值时意外发现 nil 致命错误:在展开可选值时意外发现 nil
我还尝试了这段代码(正如我在网上阅读的那样,它适用于其他开发人员):
var isBold: Bool {
return fontDescriptor.symbolicTraits.contains(.traitBold)
}
var isItalic: Bool {
return fontDescriptor.symbolicTraits.contains(.traitItalic)
}
func setBoldFnc() -> UIFont {
if(isBold) {
return self
} else {
var fontAtrAry = fontDescriptor.symbolicTraits
fontAtrAry.insert([.traitBold])
guard let fontAtrDetails = fontDescriptor.withSymbolicTraits(fontAtrAry) else { return self }
return UIFont(descriptor: fontAtrDetails, size: 0)
}
}
func setItalicFnc()-> UIFont {
if(isItalic) {
return self
} else {
var fontAtrAry = fontDescriptor.symbolicTraits
fontAtrAry.insert([.traitItalic])
guard let fontAtrDetails = fontDescriptor.withSymbolicTraits(fontAtrAry) else { return self }
return UIFont(descriptor: fontAtrDetails, size: 0)
}
}
有人在 iOS 12 及以后的版本中遇到过这种情况吗?
我还读到 iOS 8 中存在与此相关的错误,但表示已在更高版本中修复了此问题:
https://code-examples.net/en/q/18c6177
*注意:我只使用了“-Regular”文件的自定义字体。因为某些字体没有“-Italic”或“-Bold”字体样式。
示例:Archivo Black 字体和 Oswald 字体