2017-04-20 75 views
0

在我的應用程序,我將在更改歸屬字符串的單個字體屬性。

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

我知道如何使用下面的函數這個網站字符串轉換爲構造一個AttributedString格式得到一個HTML字符串。

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

但問題是,我希望保留獲得AttributedString的所有屬性,但可以改變任何字體大小,字體,這達到attributedString的段落樣式。

例如,如果我從這個html中獲得一個大膽的attributesString,我怎麼能改變這個特定字符串的字體大小或字體系列而不改變它的大膽狀態?

我該怎麼做?

謝謝!

+0

http://stackoverflow.com/questions/19921972/parsing-html-into-nsattributedtext-how-to-set-font http://stackoverflow.com/questions/25401742/apply-custom-font-to-歸屬字符串,它轉換從HTML字符串http://stackoverflow.com/questions/41412963/swift-change-font-on-an-html-string-that-has-its-own-styles/41413014 #41413014 – Larme

回答

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 { 

    }  
} 

這應該得到你所有的屬性。可能是解析它們的更好方法,但這對你而言可能是一個好的開始。

+0

=>'attributes [「NSFont」]'=>'attributes [NSFontAttributeName]',no? – Larme

+0

我在調試器中檢查過,只有「NSFont」 – Luzo

+1

'NSFontAttributeName'是iOS定義的一個常量,現在等於'NSFont'。但是在未來,如果蘋果改變它的價值爲iOS的'UIFont'和'NSFont'爲OSX,這可能是有道理的,你的代碼將不再工作。當你自己添加屬性時,你可以使用'NSFontAttributeName' / – Larme