Wie kann ich HTML-Text in der Textansicht anzeigen?
Beispielsweise,
string <h1>Krupal testing <span style="font-weight:
bold;">Customer WYWO</span></h1>
Angenommen, Text ist fett gedruckt, sodass er in der Textansicht als fette Zeichenfolge angezeigt wird, aber ich möchte normalen Text anzeigen. Ist das im iPhone SDK möglich?
ios
iphone
uitextview
milanjansari
quelle
quelle
Verwenden Sie den folgenden Codeblock für ios 7+.
quelle
NSAttributedString
zuNSMutableAttributedString
und fügen[attributedString addAttributes:@{NSFontAttributeName: font} range:NSMakeRange(0, attributedString.length)];
tv.frame = CGRectMake(0, 0, HUGE, 1); [tv sizeToFit];
NSMutableAttributedString *mString = [[NSMutableAttributedString alloc] initWithAttributedString:attributedString]; [mString addAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]} range:NSMakeRange(0, mString.length)];
Für Swift 4 , Swift 4.2: und Swift 5
Für Swift 3 :
quelle
let path = Bundle.main.path(forResource: "styles", ofType: "css")
, Holen Sie sich den Inhaltlet content = try! String(contentsOfFile: path!, encoding: String.Encoding.utf8)
und fügen Sie ihn dem HTML-StringDie Antwort von BHUPI ist richtig, aber wenn Sie Ihre benutzerdefinierte Schriftart aus UILabel oder UITextView mit HTML-Inhalten kombinieren möchten, müssen Sie Ihr HTML ein wenig korrigieren:
Sie können den Unterschied auf dem Bild unten sehen:
quelle
Sie können sich die OHAttributedLabel-Klassen ansehen. Ich habe diese verwendet, um diese Art von Problem mit meinem textField zu lösen. Dabei haben sie die drawRect-Methode überschrieben, um den erforderlichen Stil zu erhalten.
https://github.com/AliSoftware/OHAttributedLabel
quelle
Meine erste Antwort erfolgte, bevor iOS 7 die explizite Unterstützung für die Anzeige von zugewiesenen Zeichenfolgen in allgemeinen Steuerelementen einführte. Sie können nun eingestellt
attributedText
vonUITextView
auf eineNSAttributedString
Verwendung von HTML - Inhalten erstellt:- initWithData: options: documentAttributes: error: (Apple Doc)
Ursprüngliche Antwort, für die Geschichte erhalten:
Wenn Sie a nicht verwenden
UIWebView
, wird Ihre Lösung direkt darauf angewiesen seinCoreText
. Wie ElanthiraiyanS hervorhebt, sind einige Open-Source-Projekte entstanden, um das Rendern von Rich-Text zu vereinfachen. Ich würdeNSAttributedString-Additions-For-HTML( Bearbeiten: Das Projekt wurde durch DTCoreText ersetzt ) empfehlen , das Klassen zum Generieren und Anzeigen von zugeordneten Zeichenfolgen aus HTML enthält.quelle
Die Antwort hat mir von BHUPI gepasst.
Die Codeübertragung erfolgt wie folgt schnell:
Achten Sie auf "allowLossyConversion: false"
Wenn Sie den Wert auf true setzen, wird reiner Text angezeigt.
quelle
NSUnicodeStringEncoding
ist korrekt, da NSString Unicode-codiert ist, nicht UTF8. Im Falle eines CJK-Charakters erhalten Sie keine richtige Antwort.Für Swift3
quelle
In einigen Fällen ist UIWebView eine gute Lösung. Weil:
Die Verwendung von NSAttributedString kann zu Abstürzen führen, wenn HTML komplex ist oder Tabellen enthält (siehe Beispiel ).
Zum Laden von Text in die Webansicht können Sie das folgende Snippet verwenden (nur ein Beispiel):
quelle
Sie können auch einen weiteren Weg verwenden. Die Three20-Bibliothek bietet eine Methode, mit der wir eine gestaltete Textansicht erstellen können. Sie können die Bibliothek hier herunterladen : http://github.com/facebook/three20/
Die Klasse TTStyledTextLabel hat eine Methode namens textFromXHTML: Ich denke, dies würde den Zweck erfüllen. Aber es wäre im schreibgeschützten Modus möglich. Ich denke nicht, dass es erlaubt, HTML-Inhalte zu schreiben oder zu bearbeiten.
Es gibt auch eine Frage, die Ihnen dabei helfen kann: HTML-String-Inhalt für UILabel und TextView
Ich hoffe es ist hilfreich.
quelle
NSDoc speichert die Textdatei in einer Zeichenfolge in einer HTML-Datei und lädt sie gleichzeitig in eine Webansicht, die sich an derselben Stelle befindet wie Ihre UITextView.
quelle