UIWebView может работать только с PNG вместо JPG?

#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. Никаких изменений. Я даже удалил приложение в симуляторе и повторно запустил .. все то же (странное) поведение.