Ich kann nicht glauben, dass ich diese Frage stelle, aber (die Suche nach der Antwort für eine Stunde und eine Hälfte ohne Glück) ... Wie füge ich NSAttributedText an ein UITextView an? (in Swift 2.0+)Append NSAttributed Text zu UITextview
Ich baue ein Tool, das Elemente von meinem Server herunterlädt, und wenn sie hereinkommen, möchte ich AttributedText mit Grün für den Erfolg oder rot für Fehler hinzufügen.
Um dies zu tun, ich glaube, ich NSMutableAttributedString brauchen, aber die UITextView hat NSAttributedString nur die den Zugang zum appendAttributedString(attrString: NSAttributedString NSAttributedString)
nicht so, wenn ich eine UITextView mit einem NSAttributedString auf sie haben, die „Laden“ in rot sagt, wie kann ich anhängen den Text "Laden" mit dem Text in grün "Erfolg".
Zum Beispiel wie folgt aus:
<font color="red">loading</font><font color="green">success</font>
aktualisieren
fand ich eine Antwort auf meine Frage, aber ich fühle mich nicht eine optimale Antwort.
let loadingMessage = NSMutableAttributedString(string: "loading...\n")
loadingMessage.addAttribute(NSStrokeColorAttributeName, value: UIColor.redColor(), range: NSRange(location: 0, length: 10))
progressWindowViewController.theTextView.attributedText = loadingMessage
loadingMessage.appendAttributedString("<font color=\"#008800\">Successfully Synced Stores...</font>\n".attributedStringFromHtml!)
progressWindowViewController.theTextView.attributedText = loadingMessage
Meine Antwort oben funktioniert, aber nicht so durch den gesamten Text überschrieben wird (und es wird jede Zeit zieht dies auch weiterhin tun). Ich frage mich, ob es eine echte Möglichkeit gibt, die Zeichenfolge an das Ende für eine optimale Leistung anzuhängen?
Die Erweiterung I für HTML verwendet
extension String {
var attributedStringFromHtml: NSAttributedString? {
do {
return try NSAttributedString(data: self.dataUsingEncoding(NSUTF8StringEncoding)!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
} catch _ {
print("Cannot create attributed String")
}
return nil
}
}
Ihre Methode ist wirklich interessant, ich habe meine Frage mit einer anderen Lösung aktualisiert, die ich gefunden habe, ist Ihre besser? Wie wenn ich Zeichenfolgen anhange, nachdem ich es auf die textView gesetzt habe, hängt es an oder muss ich die Zeichenkette auf dem textView zurücksetzen? –
Ich möchte nicht beurteilen, welche Methode effektiver ist, es hängt sicherlich vom Kontext ab. Aber leistungsmäßig würde ich vermuten, dass 'mutableCopy()' und 'copy()' ziemlich schnell sind. Leider können Sie das UITextViews.attributedText-Objekt nicht "live anhängen", da dies ein unveränderliches Objekt ist. (Da "NSMutableAttributedString" eine Unterklasse von "NSAttributedString" ist, können Sie der UITextView eine veränderbare Zeichenfolge zuweisen."AppendAttributedString()" aufzurufen, funktioniert hier jedoch nicht - es scheint, als ob UITextView eine interne Konvertierung durchführt. – Lasse
Ihre Antwort half, der einzige Unterschied war, dass ich die Strings als NSMutableAttributedString definierte, um die Konvertierungen zu vermeiden. Unglücklicherweise hat UITextview keine interne Methode, um korrekt anzuhängen. –