Ändern der Attribute von Teilstrings in einem NSAttributedString
Diese Frage kann ein Duplikat der diese eine. Aber die Antworten, die don T Arbeit für mich, und ich möchte, um genauer zu sein.
Ich habe eine NSString
aber ich brauche eine NS(Mutable)AttributedString
und einige von den Wörtern in diesem string sollte gegeben werden, eine verschiedene Farbe. Ich versuchte dies:
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]];
Dem "und" sollte groß geschrieben werden eine rot.
Die Dokumentation sagt, dass mutableString hält die Attribut-Zuordnungen. Aber mit meinem Ersatz-Ding habe ich nicht mehr attributedString auf der rechten Seite der Zuweisung (in der letzten Zeile von meinem code-snippet).
Wie kann ich das bekomme, was ich will? 😉
InformationsquelleAutor der Frage mjay | 2013-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
@Hyperlord ' s Antwort wird funktionieren, aber nur, wenn es einem vorkommen des Wortes "und" in der input-string. Wie auch immer, was ich tun würde, ist die Verwendung NSString ist
stringByReplacingOccurrencesOfString:
zunächst zu ändern alle "und" ein "UND", dann verwenden Sie ein wenig regex zum erkennen von übereinstimmungen in zugeschrieben string, und geltenNSForegroundColorAttributeName
zu diesem Bereich. Hier ist ein Beispiel:Und schließlich, nur für den zugeschrieben string zu Ihrem label.
InformationsquelleAutor der Antwort Mick MacCallum
Ich denke, Sie sollten eine
NSMutableAttributedString
mit den vorhandenenNSString
und fügen Sie dann die style-Attribute mit den entsprechendenNSRange
um zum einfärben der Teile, die Sie betonen möchten, zum Beispiel:Beachten Sie: dies ist nur aus meinem Kopf und nicht getestet 😉
InformationsquelleAutor der Antwort hyperlord
Hier ist eine andere Implementierung (Swift), die hilfreich ist, wenn man dabei einige komplexere Manipulationen (wie das hinzufügen/löschen von Zeichen), die mit Ihren zugeschrieben string:
Ihre endgültige zugeschrieben string sollte sein:
InformationsquelleAutor der Antwort ocwang
Bitte versuchen Sie diesen code in Swift 2
InformationsquelleAutor der Antwort Masa S-AiYa