フォントサイズを変更したい
【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
文字列のなかに "
[ダブルコーテーション]があるとエラーになります。[リンク]などでダブルコーテーションをつかうときは、 \
[バックスラッシュ]をダブルコーテーションのまえにつけてください。
実行すると、こちらのように指定したフォントサイズで表示されます。