texte de différentes couleurs dans NSTextField

mulot

Membre confirmé
12 Février 2003
19
0
Bonjour,

Je recherche comment faire pour avoir un texte dans un NSTextField avec par exemple chaque lettre du texte d'une couleur différente.

J'ai pensé à un NSAttributedString mais je n'arrive pas à spécifier les attributs lettre par lettre.

Quelqu'un sait comment faire ou mieux un exemple ?
 
Je n'ai jamais testé, mais tu dois pouvoir t'en sortir en utilisant la méthode :

- (void)setAttributedStringValue:(NSAttributedString *)object

..sur ton objet NSTextField.

Il te faudra ensuite créé un NSAttributedString et l'initialisé avec cette méthode :

- (id)initWithString:(NSString *)aString attributes:(NSDictionary *)attributes

Pour le NSDictionary, tu dois lui fournir un dictionnaire ayant une entrée NSForegroundColorAttributeName de type NSColor pour définir la couleur du texte.

Voilà, c'est vrai qu'il faut faire pas mal de chose juste pour définir la couleur de quelques caractères, mais en définitive, ce n'est pas si compliqué que ça.

Jette un coup d'oeil à la doc de NSControl et NSAttributedString si ce n'est pas clair.
 
J'ai utilisé ces méthodes ( - (void)setAttributedStringValue:(NSAttributedString *)object et - (id)initWithString:(NSString *)aString attributes:(NSDictionary *)attributes) ) mais tout ce que j'ai réussi à faire est de coloré l'ensemble de ma chaîne, non pas une seule partie comme je le veux.

Je me demande si l'objet NSTextField est bien adapté pour ceci, si il ne fautrait pas utiliser un NSTextView.
 
En fait il faut utiliser une NSMutableAttributedString et non pas une NSAttributedString.

avec la fonction addAtttribute: value: range:

exemple :
[astr addAttribute:NSForegroundColorAttributeName value:[NSColor greenColor] range:NSMakeRange(0, 8)];