10

何らかの理由で、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タグを付けました-何も変わらないようです。

4

2 に答える 2

11

<img>タグで高さと幅を指定していることを確認してください。これを機能させるには、少なくとも幅が必要です。

于 2010-10-27T13:23:40.070 に答える
6

減少している非網膜デバイスの人口の画像のサイズ変更(縮小)をWebKitに処理させることを気にしない場合は、次のようにすることができます。

  1. @2x画像を提供するだけです。
  2. IMGタグで、またはCSS3のbackground-sizeプロパティを使用して、公称(高解像度以外)の画像サイズを指定します。
于 2012-09-17T17:49:42.897 に答える