LoginSignup
2
3

More than 5 years have passed since last update.

【Swift】UITextViewに表示したHTMLのフォントサイズを変更する方法

Posted at

フォントサイズを変更したい

【Swift】UITextViewにHTMLを表示する方法で、UITextViewにHTMLを表示することができましたが、フォントが小さかったのでフォントサイズを変更できるようにしてみました。

CSSを追加してみた

こちらの A Swift extension for String and HTML でHTMLにCSSを追加する方法が紹介されていたので、その方法を採用しました。ありがとうございます!

    static func parseHTML2Text(sourceText text: String, fontSize: CGFloat) -> NSAttributedString? {

        let htmlCSSString = "<style>" +
            "*" +
            "{" +
            "font-size: \(fontSize)pt;" +
            "font-family: Helvetica;" +
        "}</style>"
        let cssText = htmlCSSString + text
        let encodeData = cssText.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 {
                print("error: ", error)
                return nil
            }
        }

        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, fontSize: 6.0)
    htmlTextView.attributedText = attributedString

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

実行すると、こちらのように指定したフォントサイズで表示されます。

スクリーンショット 2018-08-06 16.49.04.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3