schmittsfn
schmittsfn

Reputation: 1442

Can you display a html <img> tag inside a UILabel in Swift?

Can you show a html <img src=''> inside a NSAttributedString used in an UILabel?

Upvotes: 0

Views: 1040

Answers (1)

schmittsfn
schmittsfn

Reputation: 1442

Yes you can, even though Apple doesn't recommended it:

The HTML importer should not be called from a background thread (that is, the options dictionary includes documentType with a value of html). It will try to synchronize with the main thread, fail, and time out. Calling it from the main thread works (but can still time out if the HTML contains references to external resources, which should be avoided at all costs). The HTML import mechanism is meant for implementing something like markdown (that is, text styles, colors, and so on), not for general HTML import.

An UILabel's attributedText can be used to render html img tags.

Here an example:

let str = "<img src='https://www.codeterritory.com/assets/screenshot_sidiusnova_04-f5422e9916fb114e73484758278c284e.jpg'>"
let data = str.data(using: String.Encoding.unicode)!

do {
    let attrStr = try NSAttributedString(data: data, options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html], documentAttributes: nil)    
    let label = UILabel(frame: UIScreen.main.bounds)
    label.attributedText = attrStr
    UIApplication.shared.windows.first!.addSubview(label)

} catch let error {
    print(error)
}

Upvotes: 1

Related Questions