Ausgabe
Ich verwende eine Instanz von UIWebView
, um Text zu verarbeiten und korrekt einzufärben. Das Ergebnis wird als HTML angezeigt, aber anstatt es in UIWebView
anzuzeigen, möchte ich es Core Text
mit einer NSAttributedString
.
Ich bin in der Lage, die zu erstellen und zu zeichnen NSAttributedString
, aber ich bin mir nicht sicher, wie ich den HTML-Code in die attributierte Zeichenfolge konvertieren und zuordnen kann.
Ich verstehe, dass es unter Mac OS X NSAttributedString
eine initWithHTML:
Methode gibt, aber dies war nur eine Mac-Ergänzung und ist nicht für iOS verfügbar.
Ich weiß auch, dass es eine ähnliche Frage dazu gibt, aber es gab keine Antworten. Ich würde es noch einmal versuchen und sehen, ob jemand eine Möglichkeit dazu geschaffen hat und wenn ja, ob er sie teilen könnte.
Lösung
In iOS 7 hat UIKit eine Methode hinzugefügt , die eine Verwendung von HTML initWithData:options:documentAttributes:error:
initialisieren kann , z. B.:NSAttributedString
[[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
documentAttributes:nil error:nil];
In Swift:
let htmlData = NSString(string: details).data(using: String.Encoding.unicode.rawValue)
let options = [NSAttributedString.DocumentReadingOptionKey.documentType:
NSAttributedString.DocumentType.html]
let attributedString = try? NSMutableAttributedString(data: htmlData ?? Data(),
options: options,
documentAttributes: nil)
Beantwortet von – Bild
Antwort geprüft von – Marilyn (FixError Volunteer)