Das Problem, das ich habe, ist, dass ich in der Lage sein möchte, die Textfarbe eines bestimmten Textes in einer Textansicht zu ändern. Ich verwende eine verkettete Zeichenfolge und möchte nur die Zeichenfolgen, die ich an den Text von TextView anhänge. Es scheint, dass ich verwenden möchte NSMutableAttributedString
, aber ich finde keine Ressourcen, wie ich dies in Swift verwenden kann. Was ich bisher habe, ist ungefähr so:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Von hier aus weiß ich, dass ich den Bereich von Wörtern finden muss, deren Textfarbe geändert werden muss, und sie dann der zugewiesenen Zeichenfolge hinzufügen muss. Was ich wissen muss, ist, wie man die richtigen Zeichenfolgen aus dem zugeschriebenen String findet und dann ihre Textfarbe ändert.
Da ich eine zu niedrige Bewertung habe, kann ich meine eigene Frage nicht beantworten, aber hier ist die Antwort, die ich gefunden habe
Ich fand meine eigene Antwort, indem ich einen Code aus übersetzte
Ändern Sie die Attribute von Teilzeichenfolgen in einem NSAttributedString
Hier ist das Beispiel für die Implementierung in Swift:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Da ich die textColor mehrerer Strings ändern möchte, werde ich eine Hilfsfunktion erstellen, um dies zu handhaben. Dies funktioniert jedoch zum Ändern der textColor.
quelle
Antworten:
Ich sehe, Sie haben die Frage etwas beantwortet, aber um eine etwas präzisere Möglichkeit zu bieten, ohne Regex zur Beantwortung der Titelfrage zu verwenden:
Um die Farbe einer Textlänge zu ändern, müssen Sie den Start- und Endindex der zukünftigen farbigen Zeichen in der Zeichenfolge kennen, z
Anschließend konvertieren Sie in eine zugeordnete Zeichenfolge und verwenden 'add attribute' mit NSForegroundColorAttributeName:
Eine Liste weiterer Standardattribute, die Sie festlegen können, finden Sie in der Apple-Dokumentation
quelle
main_string
,string_to_color
Undrange
wurden nie mutiert. Erwägen Sie, sie auflet
konstant zu ändern ?SWIFT 5
SWIFT 4.2
quelle
Swift 2.1 Update:
self.helpText
ist eineUILabel
Steckdose.quelle
Swift 4.2 und Swift 5 färben Teile der Saite ein.
Eine sehr einfache Möglichkeit, NSMutableAttributedString beim Erweitern des Strings zu verwenden. Dies kann auch verwendet werden, um mehr als ein Wort in der gesamten Zeichenfolge einzufärben.
Fügen Sie eine neue Datei für Erweiterungen hinzu, Datei -> Neu -> Schnelle Datei mit dem Namen zum Beispiel. "NSAttributedString + TextColouring" und fügen Sie den Code hinzu
Jetzt können Sie global auf jedem gewünschten Viewcontroller verwenden:
quelle
Die Antwort wurde bereits in früheren Beiträgen gegeben, aber ich habe eine andere Art, dies zu tun
Swift 3x:
Hoffe das hilft jedem!
quelle
Chris 'Antwort war eine große Hilfe für mich, also habe ich seinen Ansatz verwendet und mich in eine Funktion verwandelt, die ich wiederverwenden kann. Dadurch kann ich einem Teilstring eine Farbe zuweisen und dem Rest der Zeichenfolge eine andere Farbe geben.
quelle
Swift 4.1
Zum Beispiel, wenn Sie die Schriftart in NavBar ändern möchten:
quelle
Sie können diese Erweiterung verwenden, über die ich sie teste
schnell 4.2
quelle
Swift 2.2
quelle
.CGColor
.Die einfachste Möglichkeit, Beschriftungen mit unterschiedlichen Stilen wie Farbe, Schriftart usw. zu erstellen, ist die Verwendung der Eigenschaft "Attributed" im Attributes Inspector. Wählen Sie einfach einen Teil des Textes und ändern Sie ihn wie gewünscht
quelle
Basierend auf den Antworten, bevor ich eine String-Erweiterung erstellt habe
Sie können die Attribute für den Text an die Methode übergeben
Rufen Sie so an
quelle
Swift 4.1
Ich habe mich von diesem in Swift 3 geändert
Und das in Swift 4.0
zu Swift 4.1
Funktioniert gut
quelle
schnell 4.2
quelle
Für alle, die nach " Anwenden einer bestimmten Farbe auf mehrere Wörter im Text " suchen , können wir dies mit NSRegularExpression tun
Referenzlink: https://gist.github.com/aquajach/4d9398b95a748fd37e88
quelle
quelle
Mit dieser einfachen Funktion können Sie den Text zuweisen und das ausgewählte Wort markieren.
Sie können die UITextView auch in UILabel usw. ändern .
quelle
Um die Farbe der Schriftfarbe zu ändern, wählen Sie zuerst Attribut statt Normal wie im Bild unten
Sie müssen dann den Text im zugeordneten Feld auswählen und dann die Farbschaltfläche auf der rechten Seite der Ausrichtungen auswählen. Dadurch wird die Farbe geändert.
quelle
Sie können diese Methode verwenden. Ich habe diese Methode in meiner allgemeinen Dienstprogrammklasse implementiert, um global darauf zuzugreifen.
quelle
Wenn Sie Swift 3x und UITextView verwenden, funktioniert NSForegroundColorAttributeName möglicherweise nicht (es hat bei mir nicht funktioniert, egal welchen Ansatz ich versucht habe).
Nach einigem Stöbern fand ich eine Lösung.
quelle
Super einfacher Weg dies zu tun.
Für weitere Informationen klicken Sie hier: https://github.com/iOSTechHub/AttributedString
quelle
Sie müssen die Textansichtsparameter ändern, nicht die Parameter der zugewiesenen Zeichenfolge
quelle
Bitte überprüfen Sie Cocoapod Prestyler :
quelle
}}
quelle
Sie können als einfache Erweiterung verwenden
quelle