Modifier les attributs des sous-chaînes dans un NSAttributedString
Cette question peut être un doublon de cette une. Mais les réponses ne fonctionnent pas pour moi et je veux être plus précis.
J'ai un NSString
mais j'ai besoin d'un NS(Mutable)AttributedString
et certains mots dans cette chaîne doit être donné une couleur différente. J'ai essayé ceci:
NSString *text = @"This is the text and i want to replace something";
NSDictionary *attributes = @ {NSForegroundColorAttributeName : [UIColor redColor]};
NSMutableAttributedString *subString = [[NSMutableAttributedString alloc] initWithString:@"AND" attributes:attributes];
NSMutableAttributedString *newText = [[NSMutableAttributedString alloc] initWithString:text];
newText = [[newText mutableString] stringByReplacingOccurrencesOfString:@"and" withString:[subString mutableString]];
"Et" doivent être en majuscules un rouge.
La documentation dit que mutableString garde les mappages d'attributs. Mais avec mon remplaçant-chose, je n'ai plus de attributedString sur le côté droit de la cession (dans la dernière ligne de mon code-extrait).
Comment puis-je obtenir ce que je veux? 😉
source d'informationauteur mjay
Vous devez vous connecter pour publier un commentaire.
@Hyperlord de réponse, mais seulement si il y a une occurence du mot "et" dans la chaîne d'entrée. De toute façon, ce que je voudrais faire est d'utiliser NSString de
stringByReplacingOccurrencesOfString:
d'abord à changer tous les "et" un "ET", puis utiliser une petite regex pour détecter les matches attribué chaîne et d'appliquer desNSForegroundColorAttributeName
à cette distance. Voici un exemple:Et enfin, il suffit d'appliquer l'attribuée chaîne de votre étiquette.
Je pense que vous devriez créer un
NSMutableAttributedString
à l'aide de l'existantNSString
puis ajouter les attributs de style avec leNSRange
afin de coloriser les pièces que vous voulez mettre l'accent, par exemple:Être conscient: c'est juste de ma tête et n'est pas testé du tout 😉
Voici une autre mise en oeuvre (Swift) qui est utile si vous faites des certains des manipulations plus complexes (telles que l'ajout/suppression de caractères) à votre attribué chaîne:
Votre finale attribuée chaîne doit être:
S'il vous plaît essayez ce code Swift 2