基本上APP都具有展示文章的功能,有時候添加文章的途徑不僅僅是通過APP,有可能是通過web端添加的,通過web端添加進行排版會包含HTML標簽以及樣式,如果后臺返回給我們的是完整的HTML,我們可以通過webview去加載,但是我遇到的情況是只是HTML的一部分包含HTML標簽的文字內(nèi)容,例如:
<p>
<span style="color: #333333; font-family: 'microsoft yahei', simhei;
font-size: 16px; line-height: 28.8px; text-indent: 30px;">
今日,GMIC 2016正式在北京開幕,開幕儀式上,中關(guān)村發(fā)展集團總經(jīng)理周云帆作了致辭演講,他表示,
“據(jù)統(tǒng)計2015年僅在這一年里面,中關(guān)村新創(chuàng)辦的科技型企業(yè)達到了2.1萬余家,很大一部分都是“互聯(lián)
網(wǎng)+”的企業(yè)。中關(guān)村的建設(shè)目標是到2020年要建設(shè)成為具有全球影響力
的科技創(chuàng)新中心?!? </span>
</p>

解析前
APP進行展示的時候,UILabel并不會主動去解析這些含有HTML元素的東西,顯示的內(nèi)容顯然不是我們想要的結(jié)果。這個時候我就聯(lián)想到了使用強大的屬性字符串去解析,果然就找到了相應(yīng)的方法:
Objective-C代碼:
NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc]
initWithData:[string dataUsingEncoding:
NSUnicodeStringEncoding]
options:@{
NSDocumentTypeDocumentAttribute:
NSHTMLTextDocumentType
}
documentAttributes:nil error:nil];
self.articelContent.text = [attrStr string];
swift代碼:
let attr = try? NSMutableAttributedString(data: data, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)
通過屬性字符串進行解析后,如果直接把屬性字符串賦給UILabel的attributedText屬性就會顯示出相應(yīng)的HTML樣式,如果我們不需要這些樣式,而是統(tǒng)一顯示,可以通過屬性字符串獲取string賦值給UILabel的text,從而不會顯示HTML的樣式:self.articelContent.text = [attrStr string];。

解析后