2012-01-07 3 views
4

現在のところ、網膜の画像(通常の2倍のサイズと@ 2x.pngの接尾辞)しか含まれていないiPhone Xcodeプロジェクトがあります。 iPhone Simulator(非網膜)でアプリを実行すると、画像はまだ表示されています。つまり、網膜と網膜以外の2組の画像を含むことを心配する必要はありませんか?iPhoneプロジェクトに網膜以外の表示画像は含まれていません

これはすべて奇妙なようです。非@ 2xファイルが含まれていないと、網膜以外のデバイスに画像が表示されないと私は考えます。

注:私は、網膜以外のデバイスで私のアプリをテストしていません。ちょうどシミュレータ。

答えて

1

それが動作する場合であっても、それは良い習慣ではない、とあなたはメディア重いアプリを持っている場合は、間違いなくそれはところで、パフォーマンスとバッテリ寿命とメモリフットプリントと....

に影響を与えるだろう、それだけですあなたが1xグラフィックスを利用できない、またはあなたのアプリを気にしている(ダウンロードサイズ)か、あなたのアプリを気にしているか(ダウンロードサイズ)...

2

私は、iOSが@ 2xを使用して、網膜以外のグラフィックを持っていない場合はそれを縮小すると確信しています。それは、iOSが実行時にスケーリングを行うようにしているため、非最適ですが、これは非網膜グラフィックを含むよりも遅くなり、iOSは選択したグラフィックエディタと同じようにスケーリングとしてはうまくいかないかもしれません。

1

ImageをInterface Builderで割り当てていて、画像プロパティをUIImageViewたとえば、[email protected]に設定すると、iOSは高解像度の「2倍」画像であることを認識しません。実際、網膜ディスプレイでは、iOSは[email protected]@2x.pngという名前の画像を探します。それが見つからないので、画像の倍率を1.0に設定します。

contentModeプロパティ(XCodeの「モード」のみ)は、画像の拡大縮小がUIImageViewの制約に適合するかどうかを判断します。網膜と非網膜ディスプレイの両方に必要な高解像度画像を得るために、モードを「アスペクトフィット」に設定したい場合があります。一般に、Interface Builderに表示されるように画像が表示されます。

あなたは(ここで、「image.png」は存在しませんが、「[email protected]」はありません)画像をロードするためにUIImageのimageNamedまたは類似の機能を使用して、ちょうどimageを指定している場合は、iOSのは、実際に検索しますスケール係数は1.0になりますが、非網膜ディスプレイ上の画像です。以前のように、ビューに合わせてスケーリングする必要があります。画像は網膜デバイスで正常に機能し、倍率は2.0に設定されます。これは、iOSが最初に「2倍」の画像を探し、他のファイルが存在するかどうかは関係ありません。

これはimageNamedに、Appleのドキュメントからです:のiOS 4以降を実行しているデバイスで

デバイスの画面は、1.0の規模を持っている場合、動作は同じです。画面の尺度が2.0の場合、 このメソッドは最初に、同じファイル名 に@ 2xサフィックスが付加された画像ファイルを検索します。たとえば、ファイル名が ボタンの場合、最初にボタン@ 2xが検索されます。 2倍を検出すると、その画像は でロードされ、返されたUIImageオブジェクト のscaleプロパティは2.0に設定されます。それ以外の場合は、変更されていないファイル名をロードし、スケール プロパティを1.0に設定します。異なる倍率の画像をサポートする の詳細については、「iOS App Programming Guide」を参照してください。

可能であれば、実際には網膜と非網膜の両方の画像を含める必要があります。必要以上に高解像度の画像を使用すると、メモリとパフォーマンスに悪影響を及ぼします。

関連する問題