基本上APP都具有展示文章的功能著蛙,有時(shí)候添加文章的途徑不僅僅是通過(guò)APP删铃,有可能是通過(guò)web端添加的,通過(guò)web端添加進(jìn)行排版會(huì)包含HTML標(biāo)簽以及樣式踏堡,如果后臺(tái)返回給我們的是完整的HTML猎唁,我們可以通過(guò)webview去加載,但是我遇到的情況是只是HTML的一部分包含HTML標(biāo)簽的文字內(nèi)容顷蟆,例如:
<p>
<span style="color: #333333; font-family: 'microsoft yahei', simhei;
font-size: 16px; line-height: 28.8px; text-indent: 30px;">
今日诫隅,GMIC 2016正式在北京開(kāi)幕,開(kāi)幕儀式上帐偎,中關(guān)村發(fā)展集團(tuán)總經(jīng)理周云帆作了致辭演講逐纬,他表示,
“據(jù)統(tǒng)計(jì)2015年僅在這一年里面削樊,中關(guān)村新創(chuàng)辦的科技型企業(yè)達(dá)到了2.1萬(wàn)余家豁生,很大一部分都是“互聯(lián)
網(wǎng)+”的企業(yè)兔毒。中關(guān)村的建設(shè)目標(biāo)是到2020年要建設(shè)成為具有全球影響力
的科技創(chuàng)新中心〉橄洌”
</span>
</p>
解析前
APP進(jìn)行展示的時(shí)候育叁,UILabel并不會(huì)主動(dòng)去解析這些含有HTML元素的東西,顯示的內(nèi)容顯然不是我們想要的結(jié)果芍殖。這個(gè)時(shí)候我就聯(lián)想到了使用強(qiáng)大的屬性字符串去解析豪嗽,果然就找到了相應(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)
通過(guò)屬性字符串進(jìn)行解析后,如果直接把屬性字符串賦給UILabel的attributedText屬性就會(huì)顯示出相應(yīng)的HTML樣式豌骏,如果我們不需要這些樣式龟梦,而是統(tǒng)一顯示,可以通過(guò)屬性字符串獲取string賦值給UILabel的text窃躲,從而不會(huì)顯示HTML的樣式:self.articelContent.text = [attrStr string];变秦。
解析后