По какой-то причине я не могу заставить UIWebView «играть хорошо» с моими новыми изображениями Retina. Вопрос, шаг за шагом:Использование изображений Retina в локальном UIWebView
Я загружаю серию файлов справки HTML из комплекта. Мой код загружает разные HTML-файлы, если это iPhone 4 (LWERetinaUtils
ниже - класс использования, который я написал). Я прочитал in this question, что UIWebView не может автоматически обнаруживать индикатор @ 2x - и испытал это лично, следовательно, этот подход.
if ([LWERetinaUtils isRetinaDisplay])
htmls = [NSArray arrayWithObjects:@"[email protected]",@"[email protected]",nil];
else
htmls = [NSArray arrayWithObjects:@"foo.html",@"bar.html",nil];
Единственное различие между содержанием [email protected]
и foo.html
является то, что метки изображения относятся к изображениям с высоким разрешением.
Затем я загружаю мой UIWebView как это:
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 375.0f)];
_webView.delegate = self;
[self _loadPageWithBundleFilename:self.filename];
[self.view addSubview:_webView];
_loadPageWithBundleFilename:
просто вспомогательный метод я написал, чтобы сказать UIWebView для загрузки содержимого из файла.
До сих пор так хорошо, мой контент загружается по-разному между iPhone Simulator и iPhone 4 Simulator - и не так, как я ожидал.
Текст отображается точно такого же размера - но изображения Retina, по-видимому, масштабируются (они выглядят неровными), и они вылетают с правого края экрана.
Я попробовал:
_webView.scalesPageToFit = YES
собственности, и конечно, он сделал изображения выглядят соответствующим образом (по крайней мере, не некачественно). Но, тогда мой текст был крошечным (поскольку я был довольно далеко увеличен с помощью веб-представления).
Кто-нибудь знает, как обойти эту проблему? Я видел несколько Javascript-решений (like this), но они, похоже, просто «обмениваются фотографиями», что я уже делал выше, поэтому он должен работать, нет?
Наконец, в HTML-файлах, вот так, как я имею в виду образы:
<img src="[email protected]" border="0" title="Welcome!" class="title"/>
И CSS:
body{ margin:20pt; padding:10pt; line-height:38pt; font-size:24pt; text-align:left; background-color: transparent; font-family:Helvetica,sanserif; width:640pt;}
я поставил ширина тег в CSS - это похоже, ничего не меняет.
Это поможет увидеть фрагмент кода HTML. Как настроить UIWebView не имеет значения для масштабирования изображения. Это все в HTML/CSS/JS. – Mike
Майк, добавленный по вашему запросу- – makdad
Возможно, мой ответ на аналогичный вопрос интересен http://stackoverflow.com/questions/3724058/uiwebview-and-iphone-4-retina-display/7741453#7741453. Он использует Javascript для загрузки масштабированных изображений и правильной настройки ширины, и швы отлично работают с локальными изображениями. –