Я удивлен, что просто установить полужирный шрифт и курсив для существующего шрифта так сложно в 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)
Я искал везде и не нашел простого решения, соответствующего моим потребностям.