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 ?
 

molgow

Membre expert
Club MacG
4 Janvier 2002
5 496
613
39
Suisse
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.
 

mulot

Membre confirmé
12 Février 2003
19
0
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.
 

mulot

Membre confirmé
12 Février 2003
19
0
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)];