Swift: программно сделать UILabel полужирным без изменения его размера?
У меня есть UILabel, созданный программно. Я хотел бы сделать текст метки жирным шрифтом без указания размера шрифта. До сих пор я только нашел:
UIFont.boldSystemFont(ofSize: CGFloat)
это то, что у меня есть точно:
let titleLabel = UILabel()
let fontSize: CGFloat = 26
titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabelFontSize)
но таким образом я также устанавливаю размер. Я бы хотел избежать этого. Есть ли способ?
Если нет никакого способа, что было бы хорошим обходным путем в Swift?
спасибо!
2 ответов
чтобы просто сделать шрифт полужирным, не изменяя размер шрифта, вы можете создать такое расширение (которое основано на ответе здесь:
extension UIFont {
func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor()
.fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
return UIFont(descriptor: descriptor, size: 0)
}
func bold() -> UIFont {
return withTraits(.TraitBold)
}
}
таким образом, вы можете использовать его следующим образом:
let titleLabel = UILabel()
titleLabel.font = titleLabel.font.bold() //no need to include size!
обновление для синтаксиса Swift 4:
extension UIFont {
func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor
.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
return UIFont(descriptor: descriptor!, size: 0)
}
func bold() -> UIFont {
return withTraits(traits: .traitBold)
}
}