非網膜デバイスで正常に動作するアプリがあり、必要な@ 2x画像を提供せずに、それを網膜デバイスにデプロイした場合、どのような副作用が発生する可能性がありますか?高いメモリ使用量?アプリケーションのクラッシュ?
3 に答える
いいえ、あなたが言及したイベントは発生しません。ただし、画像は適切に拡大縮小されないため、明らかにひどく見えます(したがって、画像がピクセル化され、サイズが正しくないなど)。
Retina画像を使用しないことに意味はありません。画像に@2xを追加し、画像サイズを2倍にするだけで、網膜以外の表示と網膜表示の両方で正しくスケーリングされます。
もちろん、網膜のみ、または網膜以外の画像のみを提供できます。
数か月前に、この問題についていくつかのテストを行いました。
網膜以外の画像だけが、予想通り、グラフィックが貧弱になりました。訓練を受けていない目でさえ、ぼやけに気付く可能性があります。
網膜画像のみ:動作します。ただし、メモリフットプリントは大きくなり(網膜以外の画像をロードする網膜以外のデバイスの場合)、多少の遅延が発生する可能性があります。確かにそれを測定しなければなりませんでしたが。
あなたの質問に答えるために:天頂は答えを提供しました。非網膜画像のみを提供する場合、網膜デバイスのグラフィックはぼやけますが、これが原因でメモリ不足の状態が発生することはありません。
編集:
さまざまなiOSデバイスのグラフィックス機能について何らかの調査を行っている場合を除き、網膜と非網膜の両方のタイプの画像を提供することを強くお勧めします。
あなたのデザイナーがこれのためにあなたに苦労しているなら、あなたはいくつかのことをすることができます:
- 新しいデザイナーを取得する
- 彼の仕事を簡単にするためのある種のツールを彼に提供します:例えばUnretiner
@ 2x画像を含めない場合、デバイスは網膜デバイス上の画像を自動的に拡大して同じ部屋を占有します(画像を拡大します)。
UIKitが使用するスケーリング方法では、補間は行われません。代わりに、すべてのピクセルのサイズを2倍にするだけです(「最近傍」スケーリング)。ハードエッジのある正方形の画像の場合、これは問題なく機能します。ただし、写真やほとんどのアートワークの場合、画像は非常にピクセル化されたように見えます(アーティファクトがあります)。
網膜デバイスで画像をスケールアップすることは、採用されている単純なスケーリング方法のため、パフォーマンスを重視するものではありません。パフォーマンスに影響を与える可能性は低く、画質にのみ影響します。
高解像度の画像のみを含める場合、網膜以外のデバイスでは自動的に縮小されません。代わりに、たとえばUIImageViewの場合、ビューモードをScale to Fillに設定して、画像がフレームに合わせて縮小されるようにします。ただし、ここでも、UIKitは最近傍を使用しますが、スケールダウンすると、アーティファクトは目立たなくなります。
新しい網膜デバイスはより高性能であるため、非網膜デバイスが低解像度画像を処理できるのと同じ速度で高解像度画像を処理でき、画像のスケールアップは簡単です。ただし、古い非網膜デバイスは、特にそれらを縮小する必要があるため、より多くのメモリとより多くのグラフィックスパワーを必要とする高解像度の画像では単に遅くなります。
UITableViewに高解像度の画像がある場合、これは非常に顕著です。網膜デバイスはテーブルを非常にスムーズにスクロールしますが、非網膜デバイスでは多少のジッターが発生します。クラッシュすることはなく、スムーズではありません。ユーザーエクスペリエンスが悪すぎると、アプリが拒否される可能性があります。静止した非動画の画像の場合、パフォーマンスに大きな違いが生じる可能性はほとんどありません。
バンドルに余裕がある場合は、網膜と非網膜の両方の画像を含める必要があります。Photoshopのような素敵な写真エディタで画像サイズを2倍にして、@ 2x画像を作成したとしても、画像はUIKitが生成するものよりもはるかに優れた品質になります。
zip形式のアプリバンドルが50MBを超える場合は、AppStoreからWiFi経由でのみダウンロードできることに注意してください。PNGとJPEGはすでに圧縮されているため、あまり圧縮されません。これが、高解像度の画像のみを含めることを選択する理由の1つです(特に、4セットの画像が含まれる可能性があるユニバーサルアプリの場合、アプリバンドルのサイズを抑えるため)。