UIWebViewで、CSSを読み込む。

UIWebViewでCSSを読み込む方法です。
ちょっとメモ代わりに記事にします。

いくつか方法がありますが、Javascriptを実行するのが一番手っ取り早いでしょう。

Bundle内のファイルのパスを取得して、そのファイルのテキストを読み込んだstyleかファイルへの絶対パスをsrcとしたlinkタグを追加するjavascriptをUIWebViewが実行します。

cssのファイルのテキストを読みこんで追加するのは以下のようなコードで動作します。

- (void)_webViewLoadCSS:(UIWebView *)webView appendCSS:(NSString *)css{

    NSMutableString *javascript = [NSMutableString new];
    [javascript appendString:@"var style = document.createElement('style');"];
    [javascript appendString:@"style.type = 'text/css';"];
    [javascript appendFormat:@"var css = document.createTextNode('%@');", css];
    [javascript appendString:@"style.appendChild(css);"];
    [javascript appendString:@"document.head.appendChild(style);"];

}

cssのファイルへのパスを取得する場合は、以下のようなコードで読み込めます。

- (void)_webViewLoadCSS:(UIWebView *)webView{

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"hogehoge" withExtension:@"css"];
    NSMutableString *javascript = [NSMutableString new];
    [javascript appendString:@"var style = document.createElement('link');"];
        [javascript appendString:@"style.type = 'text/css';"];
        [javascript appendString:@"style.setAttribute('rel','stylesheet');"];
        [javascript appendFormat:@"style.setAttribute('href','%@');",[url.absoluteString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        [javascript appendString:@"document.head.appendChild(style);"];
        [webView stringByEvaluatingJavaScriptFromString:javascript];
}

これのコードをUIWebViewDelegateメソッドwebViewDidFinishLoad:で呼び出せば、読み込んだHTMLにCSSを追加できます。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です