我很惊讶,仅仅设置现有字体的加粗和斜体在Swift中如此复杂。
我希望通过在字体类上添加以下方法来简化事情。
我希望将以下方法添加到已经设置了字体系列和字号的现有字体中。 我需要保留这些设置,只更改以下内容。
setBold:应保留斜体
setItalic:应保留加粗
setBoldItalic
setNormal:删除加粗和斜体
removeBold:应保留斜体
removeitalic:应保留加粗
我尝试了下面的代码,并且使用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)
我到处搜索,但没有找到符合我的需求的简单解决方案。