如何使用NSAttributedString转换HTML

本教程将向您展示如何使用NSAttributedString转换HTML。 通过使用NSAttributedString转换HTML,我的意思是转换HTML标记并从中创建属性字符串。 然后将其加载到UILabelUITextView之类的文本组件中。 有时,您可能会从API得到响应,在该响应中,您将拥有一个字符串以及其中的所有HTML标记,并且需要以属性字符串的形式将其呈现给UI。

HTML示例

 

 

This is heading 1


This is heading 2


This is heading 3


This is heading 4


This is heading 5

This is heading 6
  

创建扩展

我经常使用扩展,并会建议您同样的扩展 ,因为它们是组织Swift代码和使函数可重用的关键。 现在,我们将创建字符串扩展名,在其中保留我们的convertHtml()函数,该函数将为我们完成所有工作。 此函数会将所有HTML标记转换为NSAttributedString 。 让我们将扩展名命名为String + Extensions.swift。

 extension String{ 
func convertHtml() -> NSAttributedString{
guard let data = data(using: .utf8) else { return NSAttributedString() }
do{
return try NSAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], documentAttributes: nil)
}catch{
return NSAttributedString()
}
}
}

如何使用?

最后,我将从HTML示例中创建一个字符串,然后调用convertHtml() 将其设为NSAttributedString。 然后,将结果添加到名称为descLbl的UILabel中。

 descLbl.attributedText = "

This is heading 1

This is heading 2

This is heading 3

This is heading 4

This is heading 5
This is heading 6
".convertHtml()

这是我们的UILabel的最终输出: