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」を参照してください。
可能であれば、実際には網膜と非網膜の両方の画像を含める必要があります。必要以上に高解像度の画像を使用すると、メモリとパフォーマンスに悪影響を及ぼします。