NSMutableAttributedString et NSTextView
Veillard
Membre
Bonsoir tout le monde
Je voudrais attribuer un ou plusieurs styles à quelques mots qui doivent s'afficher dans une TextView. Pour cela, j'ai utilisé les NSMutableAttributedString pour construire petit à petit mon texte mis en forme. Mais ce que je n'arrive pas à faire c'est afficher le résultat dans ma TextView (ça marche bien avec NSMutableString).
Comment feriez-vous ?
Je voudrais attribuer un ou plusieurs styles à quelques mots qui doivent s'afficher dans une TextView. Pour cela, j'ai utilisé les NSMutableAttributedString pour construire petit à petit mon texte mis en forme. Mais ce que je n'arrive pas à faire c'est afficher le résultat dans ma TextView (ça marche bien avec NSMutableString).
Comment feriez-vous ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[EDIT] ouf, personne ne m'a grillé
Existe-t-il un moyen pour coloriser un mot sans calculer au préalable sa longueur. Tout ça parce que la longueur des mots change en fonction de la langue :P
As tu essayé d'entrer ton texte avec des balises RTF ou HTML ? Car NSAttributedString est capable d'utiliser des textes HTML (initWithHTML...) ou RTF (initWithRTF...) pour s'initialiser...
.
[tt]
NSString *chaineHTML;
NSData *dataHTML;
NSAttributedString *chaineAttrib;
chaineHTML=@<html><body>Je <font color=red">plonge</font> bientôt.</body></html>";
dataHTML=[chaineHTML dataUsingEncoding:NSMacOSRomanStringEncoding];
chaineAttrib=[[NSAttributedString alloc] initWithHTML:dataHTML documentAttributes:NULL];
[syntheseText appendAttributedString:chaineAttrib];
[chaineAttrib release];
[/tt]
Et si tout va bien, la chaà®ne dervrait resortir comme ça :
Je plonge bientôt.
.
en fonction de la langue ?
D'habitude, j'utilise ça pour localiser :
Voici un code (loin d'être testé) pour le principe :
[tt]
NSMutableString *chaineHTML=NSMutablestring alloc] initWithString:@"<html><body>"];<br />[chaineHTML appendString:[[NSBundle mainBundle] localizedStringForKey:@"Dive number" value:@"error !" table:@"Carnet";
[chaineHTML appendString:@<font color="red"">"];
[chaineHTML appendString:NSBundle mainBundle] localizedStringForKey:@"Other number" value:@"error !" table:@"Carnet";
[chaineHTML appendString:@</font></body></html>];
[/tt]
Au final ça fait beaucoup de code et je me demande si ça vaut vraiment le coup....???
[tt]NSString* html = [NSString stringWithFormat:
  NSLocalizedStringFromTable(@html,@Carnet,nil),
  NSLocalizedStringFromTable(@key1,@Carnet,nil),
  NSLocalizedStringFromTable(@key2,@Carnet,nil)];[/tt]
où dans Carnet.strings, la valeur correspondant à html vaut:
[tt]<html><body>%@<font color=""red"">%@</font></body></html>[/tt]
Avec l'avantage de pouvoir mettre tout le texte "constant" localisé dedans.