How to display HTML content in UILabel Swift 3
First we take a HTML string as input and then process this string to generate an Attributed String which can be set to the UILabel. Below are the steps in the process:
- Data is taken from the string using the unicode encoding.
let data = string.data(using: String.Encoding.unicode, allowLossyConversion: true)
- Using the NSHTMLTextDocumentType, an NSAttributedString is generated.
if let d = data { let str = try NSAttributedString(data: d, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) return str }
- This string can be set to the UILabel to display HTML formatted text.
myLabel.attributedText = str
Have a look at the complete function below:
private func stringFromHtml(string: String) -> NSAttributedString? { do { let data = string.data(using: String.Encoding.unicode, allowLossyConversion: true) if let d = data { let str = try NSAttributedString(data: d, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) return str } } catch { print ("Failed to get HTML from string") } return nil }
This function has been written in Swift 3.