我很惊讶,在 Swift 中简单地为现有字体设置粗体和斜体是如此复杂。
我只想通过在字体类上使用以下方法来简化事情。
我希望将以下方法添加到设置了 font-family 和 font-size 的现有字体中。我需要保留这些并仅更改以下内容。
setBold : Shud 保留斜体
setItalic : Shud 保留粗体
setBoldItalic
setNormal : 删除粗体和斜体
removeBold : Shud 保留斜体
removeitalic : Shud 保留粗体
我尝试了以下方法,使用 fontDescriptorWithSymbolicTraits 对我来说就像一场噩梦。
有没有更简单的方法可以在几行代码中完成这些?
extension UIFont
{
var isBold: Bool
{
return fontDescriptor().symbolicTraits.contains(.TraitBold)
}
var isItalic: Bool
{
return fontDescriptor().symbolicTraits.contains(.TraitItalic)
}
func setBold() -> UIFont
{
var fontDescriptorVar: UIFontDescriptor
if(isBold){
return self
}
else
{
fontDescriptorVar = fontDescriptor().fontDescriptorWithSymbolicTraits(.TraitBold)
}
return UIFont(descriptor: fontDescriptorVar, size: 0)
}
func setItalic()-> UIFont
{
var fontDescriptorVar: UIFontDescriptor
if(isItalic) {
return self
}
else
{
fontDescriptorVar = fontDescriptor().fontDescriptorWithSymbolicTraits(.TraitItalic)
}
return UIFont(descriptor: fontDescriptorVar, size: 0)
}
func setBoldItalic()-> UIFont
{
let fontDescriptorVar = fontDescriptor().fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(arrayLiteral: .TraitBold, .TraitItalic))
return UIFont(descriptor: fontDescriptorVar, size: 0)
}
// Things I need are
// To set back to normal
func setNormal()-> UIFont
{
}
// Remove only bold if it's both bold and Italic
func removeBold()-> UIFont
{
}
// Remove only italic if it's both bold and Italic
func removeitalic()-> UIFont
{
}
}
我不想使用它来询问我的大小和字体作为输入:
UIFont(name "namFontFamily", size: 16)
UIFont.systemFontOfSize(16, weight: UIFontWeightLight)
我到处搜索,没有找到符合我需求的简单解决方案。