我只想通过在字体类上使用以下方法来简化 *** 作.
我希望将以下方法添加到已设置Font-family和Font-size的现有字体中.我需要保留这些并仅更改以下内容.
setBold : Shud preserve italic
setItalic : Shud preserve bold
setBoldItalic
setnormal : remove both bold and italic
removeBold : Shud preserve italic
removeitalic : Shud preserve bold
我试过下面的内容,对我来说,使用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)
我到处搜索,发现没有符合我需求的简单解决方案.
解决方法 您说您想要保留其他特征,因此您可能需要修改代码中的某些方法:func setBold() -> UIFont{ if isBold { return self } else { var symTraits = FontDescriptor().symbolicTraits symTraits.insert([.TraitBold]) let FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(symTraits) return UIFont(descriptor: FontDescriptorVar,size: 0) }}
setItalic()和setBoldItalic()也是如此.
所以,removeBold()应该是这样的:
func removeBold()-> UIFont{ if !isBold { return self } else { var symTraits = FontDescriptor().symbolicTraits symTraits.remove([.TraitBold]) let FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(symTraits) return UIFont(descriptor: FontDescriptorVar,size: 0) }}
removeItalic()会类似.
但我不确定setnormal().你想要删除所有特征,或者只想删除斜体和粗体?也许你可以随意自己做.
总结以上是内存溢出为你收集整理的Ios Swift使字体切换粗体,斜体,粗体,正常而不更改其他属性全部内容,希望文章能够帮你解决Ios Swift使字体切换粗体,斜体,粗体,正常而不更改其他属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)