Help us understand the problem. What is going on with this article?

【Swift】UITextViewにHTMLを表示する方法

More than 1 year has passed since last update.

UITextViewにHTMLを表示してみた

UITextViewにHTMLを表示したかったので、試してみました。

こちらの記事UITextViewにHTMLを表示する(Swift3版)を参考にして、HTMLをNSAttributedStringに変換するextensionを定義しました。

    import Foundation
    import UIKit

    extension NSAttributedString {

        static func parseHTML2Text(sourceText text: String) -> NSAttributedString? {
            let encodeData = text.data(using: String.Encoding.utf8, allowLossyConversion: true)
            let attributedOptions = [
                NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType as AnyObject,
                NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue as AnyObject
            ]

            var attributedString: NSAttributedString?
            if let encodeData = encodeData {
                do {
                    attributedString = try NSAttributedString(
                        data: encodeData,
                        options: attributedOptions,
                        documentAttributes: nil
                    )
                } catch _ {

                }
            }

            return attributedString
        }

    }

あとは、こちら↓のようにHTMLを変換して、UITextFieldのattributedTextに代入すればオッケーです。

    let htmlText = "<p>UITextFieldにHTMLを表示することができます。<font color=#ff0000>フォントの色</font>も変更できますし、<a href=\"https://www.apple.com/jp/\">リンク</a>も埋め込むことができます。</p>"
    let attributedString = NSAttributedString.parseHTML2Text(sourceText: htmlText)
    htmlTextView.attributedText = attributedString

文字列のなかに " ダブルコーテーションがあるとエラーになります。リンクなどでダブルコーテーションをつかうときは、 \ バックスラッシュをダブルコーテーションのまえにつけてください。

実行すると、こちらのようにHTMLのタグを解釈して表示されています。

スクリーンショット 2018-07-24 14.37.47.png

リンクをタップしたいとき

スクリーンショット 2018-07-24 11.53.23.png

リンクをタップしたいときは、 BehaviorSelectableData DetectorsLink を有効にします。
HTMLのなかにリンクが埋め込まれている場合は、タップするとSafariに遷移してリンクを開いてくれるようになります。

toshi586014
小説家でiOS・tvOS・watchOS・macOSアプリ開発者でアプリ開発講師でLINEスタンプ作者で主夫のフリー会社員。 またの名を、お好み焼きを焼けないお好み焼きクリエイター。 公開しているアプリはこちら→https://itunes.apple.com/jp/developer/toshiaki-nakamura/id822485897
http://toshi586014.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away