如何使用NSAttributedString转换HTML
本教程将向您展示如何使用NSAttributedString转换HTML。 通过使用NSAttributedString转换HTML,我的意思是转换HTML标记并从中创建属性字符串。 然后将其加载到UILabel或UITextView之类的文本组件中。 有时,您可能会从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的最终输出: