По какой-то причине я не могу заставить UIWebView "играть хорошо" с моими новыми изображениями Retina. Проблема, шаг за шагом:
Я загружаю серию файлов справки HTML из комплекта. Мой код загружает разные HTML файлы, если iPhone 4 (LWERetinaUtils
ниже - это класс утилиты, который я написал). Я прочитал в этом вопросе, что 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 (как это), но они, похоже, просто "обмениваются изображениями", что я уже сделал выше - значит, он должен работать, нет?
Наконец, в файлах HTML, вот как я обращаюсь к изображениям:
<img src="[email protected]g" 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 - он ничего не меняет.