Je souhaite afficher une chaîne de caractères comme celle-ci dans un fichier UILabel
:
Il y a 5 résultats.
Le chiffre 5 est de couleur rouge et le reste de la chaîne est noir.
Comment puis-je faire cela en code ?
Je souhaite afficher une chaîne de caractères comme celle-ci dans un fichier UILabel
:
Il y a 5 résultats.
Le chiffre 5 est de couleur rouge et le reste de la chaîne est noir.
Comment puis-je faire cela en code ?
Pour ce faire, il convient d'utiliser NSAttributedString
así:
NSMutableAttributedString *text =
[[NSMutableAttributedString alloc]
initWithAttributedString: label.attributedText];
[text addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(10, 1)];
[label setAttributedText: text];
J'ai créé un UILabel
extension pour le faire .
Depuis iOS 6 UIKit prend en charge le dessin des chaînes attribuées, aucune extension ou remplacement n'est donc nécessaire.
De UILabel
:
@property(nonatomic, copy) NSAttributedString *attributedText;
Il vous suffit de construire votre NSAttributedString
. Il y a essentiellement deux façons de procéder :
Ajouter des morceaux de texte avec les mêmes attributs - pour chaque partie, en créer une NSAttributedString
et les ajouter à une instance de NSMutableAttributedString
Créez un texte attribué à partir d'une chaîne de caractères simple, puis ajoutez des attributs pour des plages données - trouvez la plage de votre nombre (ou autre) et appliquez-lui des attributs de couleur différents.
Avoir un UIWebView ou plus d'un UILabel pourrait être considéré comme excessif dans cette situation.
Je suggère d'utiliser TTTAttributedLabel qui est un remplaçant direct d'UILabel et qui prend en charge NSAttributedString . Cela signifie que vous pouvez très facilement appliquer différents styles à différentes plages d'une chaîne.
Pour afficher un texte court et formaté qui n'a pas besoin d'être modifié, Texte de base est la voie à suivre. Il existe plusieurs projets open-source pour les étiquettes qui utilisent des NSAttributedString
et Core Text pour le rendu. Voir aussi CoreTextAttributedLabel o OHAttributedLabel par exemple.
JTAttributedLabel (par mystcolor) vous permet d'utiliser le support des chaînes attribuées dans UILabel sous iOS 6 et en même temps sa classe JTAttributedLabel sous iOS 5 à travers son JTAutoLabel.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
6 votes
@EmptyStack C'est certainement no depuis qu'iOS 4 prend en charge NSAttributedString. Voir ma réponse ci-dessous.