1

iPhone 5の新しい画面解像度とアスペクト比では、フルスクリーン(またはほとんどフルスクリーン)の画像を処理するときに新しい画面の領域を活用するための2つのアプローチがあるようです。

  • 2つの画像bg@2x.pngとbg-h568@2x.pngを含め、デバイスのメイン画面の境界を確認して、どちらをロードするかを判断します。
  • 1つのファイルのみを含め、iPhone5のフル解像度にします

(他の方法もあります:ストレッチ、タイリング、および/またはQuartzを使用した描画。)

これらのオプションには両方とも欠点があります。

  • 2つのファイルを含めると、アプリのバンドルサイズが大きくなります
  • iPhone 5の網膜画像を4にロードすると、画面に表示されたときに画像データがクリップされますが、それでも同じ量のメモリリソースが消費されます

私は特に、2番目の欠点の詳細をよりよく理解することに興味があります。

この統合画像のアイデアをさらに使用できれば、アプリバンドル(および私のデザイナー)を節約できると思います...

縦向きで320ptx480pt、横向きで480pt x 320pt(幅x高さ)の画像があるとします。

(編集:当初、私は他のいくつかの重要な情報を考慮していませんでした。完全を期すために、これらの考えをここに含めます)

横向きと縦向きのファイルではなく、480pt x 480ptの解像度で単一の画像ファイルを作成すると、アプリバンドルに2つのファイルが含まれなくなり、それぞれに320ptx320ptの重複画像データが含まれます。ただし、この大きな正方形の画像には、表示されないコーナーに4つの80ptx80pt象限が含まれます。すべてが同じであれば、アプリバンドルに含まれる画像データは20%少なくなるはずです。

Billの「iBooksAuthorExperiment」を読み直すと、メモリ要件を非常に簡単に把握できます。

  • 風景またはポートレート:640 * 960 * 4 = 2,457,600
  • 大きな広場:960 * 960 * 4 = 3,686,400

大きな正方形をロードするために必要なメモリは、画面に適切なサイズの画像をロードする場合よりも50%多くなります。明らかに、アプリバンドルの節約は、このリソースへのヒットまでは測定されません。

しかし、これをiPhone5とiPhone4を含む巨大な正方形に拡張するのはどうですか?568pt x 568pt?4つのファイル(iP4ランドスケープ、iP4ポートレート、iP5ランドスケープ、iP5ポートレート)の代わりに、アプリバンドル(巨大な正方形)には1つのファイルしかありません。節約は約60%になる可能性があります。

ヒットしたリソースはどうですか?

  • iPhone 5の横向きまたは縦向き:1136 * 640 * 4 = 2,908,160
  • ジャイアントスクエア:1136 * 1136 * 4 = 5,161,984

これは、iPhone 4では110%、iPhone 5では77.5%多くのメモリです。

私の最初の質問は大まかに2つの部分でした:1。これを正しく理解していますか?2。このトレードオフは賢明なものですか。

私の編集(ビルの答えに拍車をかけた)が、私が今このことを理解していることを示していることを願っています。そして、新しく見つかった知識が正しければ、#2はほとんどそれ自体に答えます。:-)

4

1 に答える 1

2

一般的にあなたはそれを取得します。

大きな正方形の画像があり、それが何らかのタイルパターン(リネンなど)であると仮定すると、ImageIOを使用して、必要なサイズでトリミングされた画像を読み込むことができます。これにより、画像を解凍するための追加のメモリが使用されますが、一度実行すると、消費されるのはわずかです。背景を塗りつぶすために必要なもの。

画像を拡大縮小しないことをお勧めします。

逆に言えば、1つではなく3つの画像(foo、foo @ 2x、foo-h568 @ 2x)を使用してアプリを出荷する方が理にかなっています。1つの画像を使用する必要があると私が言う唯一の方法は、3G / LTEのダウンロードサイズが(私が思うに)50MBに近い場合です。

于 2012-10-14T05:06:02.290 に答える