#ios #uiwebview #png #jpeg
#iOS #uiwebview #png #jpeg
Вопрос:
Я отображаю HTML-страницу в UIWebView следующим образом:
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
HTML содержит ссылку на изображение:
<img src="ScreenshotTop.jpg" alt="Screenshot Top Part" />
Я вообще не смог отобразить JPG (даже при настройке baseUrl, как предлагали некоторые другие вопросы / ответы). Однако, когда я изменил формат графики на PNG и ссылался на этот файл следующим образом:
<img src="ScreenshotTop.png" alt="Screenshot Top Part" />
все работало нормально. Означает ли это, что UIWebView может корректно отображать PNG, но не может работать с JPG? Или происходит что-то еще?
(Черт возьми, я использую XCode 4.1 и симулятор iOS 4.3.2.)
Ответ №1:
Не думаю, что это связано с PNG
или JPG
изображениями. Использование относительных путей или file:
путей для ссылки на изображения не работает с UIWebView. Вместо этого вы должны загрузить HTML в представление с правильным baseUrl:
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
[webView loadHTMLString:htmlString baseURL:baseURL];
Затем вы можете ссылаться на свои изображения следующим образом:
<img src="myimage.png">
Или из CSS, подобного этому:
background-image: url(loading.gif)
Важно отметить, что изображения внутри вашего пакета приложений находятся в корне пакета, даже если вы размещаете их в каталоге изображений в вашем проекте.
Проверьте здесь для получения дополнительной информации.
Комментарии:
1. Я тоже так думал. Я только что перепроверил свой код, и я не делаю ничего, кроме вызова requestWithURL: . Если есть ссылка на .jpg, это не работает, если есть ссылка на .png, это работает. Я все еще сбит с толку….
2. можете ли вы просто выполнить чистую сборку и снова протестировать этот сценарий. Может быть, какой-то старый кэшированный файл вызывает некоторую путаницу?
3. Никаких изменений. Я даже удалил приложение в симуляторе и повторно запустил .. все то же (странное) поведение.