1. ホーム
  2. iphone

[解決済み] iOSでHTMLをNSAttributedStringに変換する

2022-04-25 05:51:36

質問

のインスタンスを使用しています。 UIWebView を使用してテキストを処理し、正しく色付けしています。 UIWebView を使って表示したいのですが Core Text を使って NSAttributedString .

を作成し、描画することができるようになりました。 NSAttributedString が、HTMLを属性付き文字列に変換してマッピングする方法がよくわかりません。

Mac OS Xでは NSAttributedString には initWithHTML: メソッドがありますが、これは Mac 専用に追加されたもので、iOS では使用できません。

また、これと似たような質問があることも知っていますが、回答がありませんでしたので、もう一度試してみて、誰かがこれを行う方法を作成したかどうか、もしそうなら、それを共有することができるかどうかを確認したいと思います。

解決方法は?

iOS 7では、UIKitに initWithData:options:documentAttributes:error: メソッドで NSAttributedString を使用して、例えば、HTMLを使用しています。

[[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] 
                                 options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                           NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} 
                      documentAttributes:nil error:nil];

Swiftでは

let htmlData = NSString(string: details).data(using: String.Encoding.unicode.rawValue)
let options = [NSAttributedString.DocumentReadingOptionKey.documentType:
        NSAttributedString.DocumentType.html]
let attributedString = try? NSMutableAttributedString(data: htmlData ?? Data(),
                                                          options: options,
                                                          documentAttributes: nil)