ios7 Schriftgröße ändern beim erstellen nsattributedstring von html
Ich habe einen UITextView, wo ich bin Geschäftsführer einer NSAttributedString, zuerst wurde wie üblich über die Tastatur. Ich Speichere die zugeschrieben string als HTML, was gut aussieht.
Wenn ich wieder laden, und konvertieren Sie zurück, um eine zugeschrieben string von HTML, die font-Größe angezeigt wird, zu ändern.
Beispielsweise die HTML-Datei auf laden sieht wie folgt aus:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Helvetica; color: #000000; -webkit-text- stroke: #000000}
span.s1 {font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 21.00pt; font-kerning: none}
</style>
</head>
<body>
<p class="p1"><span class="s1">There is some text as usual lots of text</span></p>
</body>
</html>
Ich es konvertieren und überprüfen Sie die Attribute mit den folgenden code:
//convert to attributed string
NSError *err;
NSAttributedString *as = [[NSAttributedString alloc] initWithData:data3
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
documentAttributes:nil
error:&err] ;
NSMutableAttributedString *res = [as mutableCopy];
[res enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, res.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
UIFont *oldFont = (UIFont *)value;
NSLog(@"On Loading: Font size %f, in range from %d length %d", oldFont.pointSize, range.location, range.length);
}
}];
Die Ausgabe zeigt, dass die Schriftgröße hat sich von 21 auf 28:
On Loading: Font size 28.000000, in range from 0 length 40
On Loading: Font size 21.000000, in range from 40 length 1
Grundsätzlich, jedes mal, wenn ich laden Sie die Zeichenfolge, die Schriftgröße erhöht. Ich brauche, um es zu speichern als HTML-und nicht als NSData, da es auch von anderen Plattformen.
Hat jemand irgendwelche Ideen, warum dies geschieht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich auch konfrontiert mit diesem Problem, ich habe es behoben durch Durchlaufen der Attribute und dem zurücksetzen der alten Schriftgröße wie folgt
Mit
<span>
und css funktioniert bei mir, nach Parsen von HTML in NSAttributedText - wie man die schriftart?:Dieser legt den Namen der schriftart und Größe, aber nicht die Auswirkungen der Stile.
Behoben magic Apple Verhalten mit dem folgenden code:
Swift 3.0 Version
Mit 0,75-Verhältnis
Dies ist nicht ganz eine Antwort, mehr eine alternative und einen Kommentar zu den anderen Antworten gegeben, also entschuldige mich.
Antworten @KishoreThindaak und @Danomatika sind in Ordnung, wenn du weißt, was die Größe der schriftart sollte - aber meine Anwendung hat eine Mac-OS-twin generieren kann jede Größe, text -, und hatte deshalb zu allgemein sein.
Die Antwort von @k06a Werke für einfachen text, aber ich fand, dass es fehlgeschlagen ist, mit embedded-Stile - vor allem mit mehreren styles, die sich auf einer Linie, die sich der Einbettung in eine
<li>
tag.Nach vielen Stunden versuchen, dies zu beheben, ich fürchte, ich aufgegeben HTML insgesamt als die Festplatte formatieren und verabschiedet RTF statt, welche gut funktioniert, und bietet eine RTF-Datei, lesbar auf allen Plattformen. Einfacher code für die erste RTF unten...