1

以前にも同様の質問があったことは知っていますが、私は本当に悲惨な状況にあります。

iPhone 3GiPhone 4iPhone 5で動作するアプリを作成しています。

私は iOS 開発の初心者で、今まで iPhone シミュレーターで動作する大量の UI コードを書いてきました。一般的な iOS 開発について学ぶために一般的な言語と SDK 機能に集中したため、シミュレーターが提供するもの以外の解像度サポートはほとんど無視しました。

今、私はこれらの異なる iPhone バージョン間での移植性のこの要件に直面しており、非常に混乱しています。まず最初に、iPhone 3 と iPhone 4 の画面サポートの詳細について私が知っていることを教えてください。何か間違ったことをした場合は、訂正してください (今のところ、iPhone 5 は完全に無視しています)。

  1. システムは、320x480 POINTベースの表示領域を想定しています。iPhone 3 では実際の画面サイズは同じですが、iPhone 4 では実際の640x960 ピクセルサイズの画面が使用されます。

  2. 320x480サイズに従ってビューをコーディングして生成します。通常の解像度の画像 (たとえば、100x100 サイズの some_image.png) と、"@2x"サフィックスが付いた高解像度バージョンを提供します。( 200x200サイズのsome_image@2x.png ) 両方とも同じアプリ バンドル内にあります。

  3. 画像読み込みメソッドを呼び出すとUIKit、たとえば、UIImageまたはUIImageViewシステムは、現在のデバイス (iPhone 3 または iPhone 4) に応じて、正しいバージョンの画像を選択して読み込みます。

これまで、低解像度と高解像度のiPhone 3GiPhone 4をサポートするために、これらの 3 つの手順を提供することに慎重でした。

オブジェクトで使用するサイズが100x100UIImageの画像があるとします。200x200の高解像度バージョンも提供しています。これは、 "@2x"サフィックスが付いた iPhone 4 と iPhone 5 の両方で動作すると思います。

しかし、背景全体をカバーするサイズ 320x480 の背景画像があり、640x960 バージョンにも "@2x" サフィックスを付けて提供するます

しかし、サイズが640x1136の iPhone 5 の画面ではどうなるでしょうか? iPhone5解像度の画像を用意してif(IPHONE5 == true)条件付きで読み込むべきですか?

これを処理する適切な方法は何ですか?

4

1 に答える 1

2

処理する必要があるいくつかの問題:

  1. 「全画面」/背景画像/画面の縦横比に一致するように意図されたその他の画像
  2. 画面の縦横比に依存しない画像

#1の場合、同じ/類似の画像を異なる解像度で提供する必要があります。1 つは 320x480 ピクセルのデバイスに適合し、1 つは @2x の Retina ディスプレイ (640x960 ピクセル) に適合し、3 つ目は iPhone 5 ディスプレイに適合します (ユニバーサル アプリの場合は iPad の画像を分離する可能性があります)。

残念ながら、iOS は iPhone 5 ディスプレイに @2x という名前を付けることはできません。一般的な規則では、ファイル名に @568h を含めるようですが、iOS では自動的に使用されません。解決策は、ディスプレイが iPhone であるかどうか、および背の高いディスプレイであるかどうかを判断することです。次のコード スニペットを使用すると、これを行うことができます。

// Is it an iPhone with the tall screen?
if ([[ UIScreen mainScreen ] bounds ].size.height == 568.))

    // use the tall image
    image = [UIImage imageNamed:@"myImage@568h.png"

else {

    // use 'default' image (will use myimage@2x.png if iPhone retina, 
    // myImage~ipad.png if iPad, myImage~ipad@2x.png if iPad retina)
    image = [UIImage imageNamed:@"myImage.png"
}

#2 については、おそらくすべてのデバイスで 100px x 100px を正方形として表示する必要があるため、100px x 100px と 200px x 200px の画像のみを提供し、後者のファイル名には @2x が含まれています。

于 2012-12-25T20:50:51.707 に答える