How to display html formatted text in ios label

前端 未结 7 1397
逝去的感伤
逝去的感伤 2020-12-24 00:55

I would like to display html formatted text on a UILabel in IOS.

In Android, it has api like this .setText(Html.fromHtml(somestri

7条回答
  •  渐次进展
    2020-12-24 01:43

    For me, Paul's answer worked. But for custom fonts I had to put following hack.

    //Please take care of force unwrapping
    let data = htmlString.data(using: String.Encoding.unicode)! 
            let mattrStr = try! NSMutableAttributedString(
                data: data,
                options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html],
                documentAttributes: nil)
            let normalFont = UIFontMetrics.default.scaledFont(for: UIFont(name: "NormalFontName", size: 15.0)!)//
            let boldFont = UIFontMetrics.default.scaledFont(for: UIFont(name: "BoldFontName", size: 15.0)!)
            mattrStr.beginEditing()
            mattrStr.enumerateAttribute(.font, in: NSRange(location: 0, length: mattrStr.length), options: .longestEffectiveRangeNotRequired) { (value, range, _) in
                if let oFont = value as? UIFont{
                    mattrStr.removeAttribute(.font, range: range)
                    if oFont.fontName.contains("Bold"){
                        mattrStr.addAttribute(.font, value: boldFont, range: range)
                    }
                    else{
                        mattrStr.addAttribute(.font, value: normalFont, range: range)
                    }
    
                }
            }
    

提交回复
热议问题