118 votes

UILabel avec un texte de deux couleurs différentes

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 ?

6 votes

@EmptyStack C'est certainement no depuis qu'iOS 4 prend en charge NSAttributedString. Voir ma réponse ci-dessous.

224voto

João Costa Points 824

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 .

0 votes

Puis-je y ajouter des cibles ? Merci.

0 votes

Je viens d'ajouter votre extension à mon projet ! Je vous remercie !

0 votes

Belle catégorie pour UILabel. Merci beaucoup. Cela devrait être la réponse acceptée.

7voto

iMartin Points 4853

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 :

  1. 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

  2. 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.

4voto

micpringle Points 4097

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.

4voto

omz Points 38947

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.

3voto

Johan Kool Points 8778

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.com

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.

Powered by:

X