UIWebView HTML-файл основного пакета локального ресурса

Я попробовал почти все способы загрузки html-файла в UIWebView, который содержит изображения и ресурсы в основном комплекте. Веб-страница всегда загружается, но я никогда не могу заставить изображения отображаться.

NSString *html = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSString *htmldata = [NSString stringWithContentsOfFile:html encoding:NSUTF8StringEncoding error:nil];
NSString *path = [[NSBundle mainBundle] bundlePath];

[webView loadHTMLString:htmldata baseURL:[NSURL URLWithString:path]];

HTML-код имеет CSS:

background: url('image.png')

Я также заверил, что файл существует в комплекте, когда приложение запускается другими методами, но все же не повезло. Кто-нибудь видит, что не так с моим кодом???

2 ответа

Решение

Вместо загрузки HTML напрямую loadHTMLStringВы можете сделать так, чтобы веб-представление выполняло работу по загрузке HTML-кода из прилагаемого файла. Таким образом, он должен знать, откуда появился HTML для разрешения относительных ссылок.

Пример:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]];
[webview loadRequest:[NSURLRequest requestWithURL:url]];

Я не проверял выше, вам может понадобиться inDirectory пункт о pathForResource метод. Удачи!

Это старый пост, но я думаю, что способ заставить эту работу изменить следующую строку:

[webView loadHTMLString:htmldata baseURL:[NSURL URLWithString:path]];

чтобы:

[webView loadHTMLString:htmldata baseURL:[NSURL fileURLWithPath:path]];

Метод в комментарии и ответе jimbojw тоже работает, но в моем случае htmldata не извлекается из файла, но вместо этого находится в памяти.

Другие вопросы по тегам