J'ai un UILabel créé par programme. Je voudrais mettre le texte de l'étiquette en gras sans spécifier la taille de la police. Jusqu'à présent, je n'ai trouvé que:
UIFont.boldSystemFont(ofSize: CGFloat)
C'est exactement ce que j'ai:
let titleLabel = UILabel()
let fontSize: CGFloat = 26
titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabelFontSize)
Mais de cette façon, je règle également la taille. Je voudrais éviter cela. Y a-t-il un moyen?
S'il n'y a aucun moyen, quelle serait une bonne solution de contournement dans Swift?
Je vous remercie!
Pourquoi pas seulement:
titleLabel.font = UIFont.boldSystemFont(ofSize: titleLabel.font.pointSize)
Pour simplement mettre la police en gras sans modifier la taille de la police, vous pouvez créer une extension comme celle-ci (qui est basée sur la réponse ici :
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)
}
}
Donc, de cette façon, vous pouvez l'utiliser comme ceci:
let titleLabel = UILabel()
titleLabel.font = titleLabel.font.bold() //no need to include size!
Mise à jour pour 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)
}
}