UILabelにhtmlを適用させる
はじめに
htmlを含んだ文字列を色や太字、斜体などを反映させて表示させる方法です。
attributeStringのoptionとして以下のコードを追加させることでhtmlを読み込ませることが可能になります
[NSAttributedString.DocumentReadingOptionKey: Any] = [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue]
コード一覧
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let htmlText = "<font color=\"<div style=\"font-family: -apple-system, 'BlinkMacSystemFont', 'Hiragino Kaku Gothic ProN', 'メイリオ', Sans-Serif; font-size: 15px; #ff0000\">赤い色</font>で表示されるよ!\n<strong>太文字</strong>だよ!\n<i>斜体ABSDF</i>だよ</div>"
guard let data = htmlText.data(using: .utf8) else {
return
}
do {
let option: [NSAttributedString.DocumentReadingOptionKey: Any] = [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue]
let attrString = try NSMutableAttributedString(data: data, options: option, documentAttributes: nil)
label.attributedText = attrString
} catch {
print(error.localizedDescription)
}
}
}
実行するとこんな感じに表示されます。