私もこれをやっていませんでした。
サーバーからHTMLファイルを読み込み、ローカルCSSファイルを使用してスタイリングを変更しようとしました。
は、まず私が
[webView loadRequest:reqObj];
を使用し、それが- (void)webViewDidFinishLoad:(UIWebView *)webView
を打つとき、私は子供に「頭」としてCSSファイルをプッシュしようとしていた。「それはdidnの...
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *cssPath = [path stringByAppendingPathComponent:@"style.css"];
NSString *js = [NSString stringWithFormat:@"var cssChild = document.createElement('link');"
"cssChild = 'text/css';"
"cssChild = 'stylesheet';"
"cssChild = '%@';", cssPath];
js = [NSString stringWithFormat:@"%@ document.getElementsByTagName('head')[0].appendChild(cssChild);", js];
[webView stringByEvaluatingJavaScriptFromString:js];
}
ので、トンの仕事...
はその後、私は
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];
を試してみました
(私はhtmlStringにHTML文字列をコピーしました)、- (void)webViewDidFinishLoad:(UIWebView *)webView
の中に上記のコードのようにCSSを挿入しました。そしてそれは働いた!
しかし...私のHTMLファイルは、リモート・サーバに格納されており、私はHTML文字列を持っていなかったので、私はHTMLを取得するには
NSString* myFile = [NSString stringWithFormat:@"http://blablabla.com/file.html"];
NSString* myFileURLString = [myFile stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSData *myFileData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:myFileURLString]];
NSString* myFileHtml = [[[NSString alloc] initWithData:myFileData encoding:NSASCIIStringEncoding] autorelease];
を使用。今、私は 'myFileHtml'の中に生のHTMLテキストを持っています。 私は今
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:myFileHtml baseURL:baseURL];
そして、それに私のCSSファイルを注入し、「webViewDidFinishLoad」で応答をキャッチ使用し、それが働いた:)
たぶん、この問題への別の、よりエレガントな、解決策はありますが、これはあります私が思いついたのは...
希望しました。
ありがとう! それはうまくいった。 「[myFileData release];」を追加するだけでした。 – Gal