У меня тоже были проблемы с этим.
Я пытался загрузить файл HTML с сервера и изменить стиль с помощью локального файла CSS.
Сначала я использовал
[webView loadRequest:reqObj];
И когда он достиг - (void)webViewDidFinishLoad:(UIWebView *)webView
, я пытался подтолкнуть CSS-файл, как ребенок, к «голове»:
- (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];
(я скопировал строку HTML в htmlString), а затем внутри - (void)webViewDidFinishLoad:(UIWebView *)webView
я ввел CSS, как в коде выше.И это сработало!
Но ... мой 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];
, чтобы получить HTML.Теперь у меня есть необработанный HTML-текст внутри myFileHtml.Теперь я использую
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:myFileHtml baseURL:baseURL];
и перехватываю ответ в 'webViewDidFinishLoad', вставляя в него мой CSS-файл, и он работает:)
Может быть, есть другое, более элегантное решение этой проблемы,но это то, что я придумал ...
Надеюсь, это помогло.