何らかの理由で、UIWebViewを新しいRetina画像で「うまく再生」することができません。問題、ステップバイステップ:
バンドルから一連のHTMLヘルプファイルをロードしています。私のコードは、iPhone 4の場合、さまざまなHTMLファイルをロードします(LWERetinaUtils
以下は、私が作成したutilクラスです)。私はこの質問で、UIWebViewが@ 2xインジケーターを自動検出することは不可能であることを読み、それを個人的に経験したため、このアプローチを採用しました。
if ([LWERetinaUtils isRetinaDisplay])
htmls = [NSArray arrayWithObjects:@"foo@2x.html",@"bar@2x.html",nil];
else
htmls = [NSArray arrayWithObjects:@"foo.html",@"bar.html",nil];
foo@2x.html
とのコンテンツの唯一の違いは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に指示するために作成したヘルパーメソッドです。
これまでのところ、私のコンテンツはiPhoneSimulatorとiPhone4 Simulatorの間で異なって読み込まれていますが、私が期待する方法ではありません。
テキストはまったく同じサイズで表示されますが、Retina画像は拡大されているように見え(ピクセル化されているように見えます)、画面の右端から飛び出します。
私は試しました:
_webView.scalesPageToFit = YES
プロパティ、そして確かに、それは画像を適切に表示させました(少なくともピクセル化されていません)。しかし、その後、私のテキストは小さかった(Webビューによってかなりズームアウトされていたため)。
誰かがこの種の問題を回避する方法を知っていますか?私はいくつかのJavascriptソリューション(このような)を見てきましたが、それらは単に「画像スワッピング」であるように見えます。これは私がすでに上で行ったことです。
最後に、HTMLファイルでは、次のように画像を参照しています。
<img src="welcome@2x.png" 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にwidthタグを付けました-何も変わらないようです。