2017-04-20 10 views
0

In meiner app, ich werde eine HTML-Zeichenfolge im Format vonÄndern Sie die einzelnen Schriftattribute eines attributedString.

<p style = "text-align: center;"><strong>"some text in here</strong></p> 

Ich weiß bekommen, wie man eine attributedString unter Verwendung der folgende Funktion dieses HTML-String zu konvertieren.

[[NSAttributedString alloc] initWithData:[aboutData dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]} documentAttributes:nil error:nil]; 

Aber das Problem ist, möchte ich die alle Attribute des erreichten AttributedString behalten, aber in der Lage entweder Schriftgröße, Schriftfamilie und Absatz Stil dieses erreicht attributedString zu ändern.

Zum Beispiel, wenn ich einen fett attributierten String von diesem HTML erreiche, wie kann ich die Schriftgröße oder die Schriftfamilie dieser bestimmten Zeichenkette ändern, ohne den Fettdruck zu ändern?

Wie mache ich das?

Danke!

+0

http://stackoverflow.com/questions/19921972/parsing-html-into-sattributetext-how-to-set-font http://stackoverflow.com/questions/25401742/apply-custom-font-to- attribued-string-which-konvertiert-from-html-string http://stackoverflow.com/questions/41412963/swift-change-font-on-an-html-string-that-has-its-own-styles/41413014 # 41413014 – Larme

Antwort

0
text.enumerateAttributes(
    in: NSRange.init(location: 0, length: text.length), 
    options: NSAttributedString.EnumerationOptions(rawValue: 0) 
) { (attributes, range, pointer) in 
    //GET ATTRIBUTES HERE 
    if let font = attributes["NSFont"] as? UIFont { 

    }  
} 

Dies sollte Ihnen alle Attribute erhalten. Könnte ein besserer Weg sein, sie zu analysieren, aber das kann ein guter Anfang für Sie sein.

+0

=> 'Attribute [" NSFont "]' => 'Attribute [NSFontAttributeName]', nein? – Larme

+0

Ich habe es im Debugger überprüft, es gab nur "NSFont" – Luzo

+1

'NSFontAttributeName' ist ein Const von iOS definiert und ist derzeit gleich" NSFont ". Aber in Zukunft, wenn Apple seinen Wert zu 'UIFont' für iOS und' NSFont' zu OSX ändert, was sinnvoll sein könnte, wird Ihr Code nicht mehr funktionieren. Wenn Sie das Attribut selbst hinzufügen, verwenden Sie 'NSFontAttributeName' / – Larme

Verwandte Themen