以下のコードに示すように、画像を表示する Web ビューがあります。このバンドルには、iPhone4 で使用するための 128x128 の寸法の DGT64@2x.png も含まれています。DGT64@2x.png は表示されません。iPhone か iPhone4 かによって表示する方法はありますか?
<img src="DGT64.png" width="64" height="64" align="left" style="padding:2px;"/>
以下のコードに示すように、画像を表示する Web ビューがあります。このバンドルには、iPhone4 で使用するための 128x128 の寸法の DGT64@2x.png も含まれています。DGT64@2x.png は表示されません。iPhone か iPhone4 かによって表示する方法はありますか?
<img src="DGT64.png" width="64" height="64" align="left" style="padding:2px;"/>
それを行う方法は、CSS の背景を使用することです。2x のものをすべて CSS のサブセクションに埋め込むだけです。-webkit-background-size を設定することも重要です。これは、画像として機能する ID Ampersand を持つ div の css の一部 (Retina と非 Retina の両方) の例です。
div#Ampersand {
background: url('AmpersandBurned.png');
width:43px;
height:97px;
float:left;
-webkit-background-size: 43px 97px;
}
@media screen and (-webkit-device-pixel-ratio: 2) {
div#Ampersand {
background: url('AmpersandBurned@2x.png');
width:43px;
height:97px;
float:left;
}
}
@2x
このトリックは Web コンテンツでは機能しないと思います。とても便利そうに思えますが、Apple にバグを報告して、それを要求することは間違いありません。
アプリから上記の HTML を生成している場合、Retina ディスプレイ デバイスで実行しているかどうかを検出し、画像名を手動で調整するのが最善の方法だと思います。
次のようにして、Retina ディスプレイを検出できます。
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
if ([[UIScreen mainScreen] scale] == 2) {
// Use high resolution images
}
}
(ここSOで見つけた回答からそのコードを取得しました)
現在、これを行う最善の方法は、background-image
プロパティを使用して CSS ファイルで画像を参照することです。次に、高解像度の画面を持つデバイスによってのみ読み込まれる特別な CSS ファイルを使用して、これらのプロパティをオーバーライドできます。
詳細については、このブログ投稿を参照してください。