3

網膜と非網膜の両方の画像を作成する必要があると聞きました。
また、網膜の場合はimage@2x.png、非網膜の場合はimage.pngのように名前を付ける必要があります。

しかし、網膜と非網膜の両方にimage.pngを使用したいと思います。
また、ペイントツールで画像を再作成するよりも、コードで画像のサイズを調整する方が簡単なため、プログラムで縮小します。

このコードを使用してこれを行うことができます。

[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];


UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(20, 20, 40, 40);
imageView.image = [UIImage imageNamed:@"image.png"];

image.pngは、ボタンサイズまたは画像ビューサイズに縮小されます。

これは一般的な方法ですか?
この方法には不利な点がありますか?
アプリケーションにimage.pngとimage@2x.pngの両方がない場合、アップルは拒否しますか?

4

3 に答える 3

3

[EDIT1 - 特別な場合]

ただし、この問題には特別なケースがあります。Apple の現在の 2x アルゴリズムは基本的にピクセル倍増 (各方向) であるため、画像が垂直線と水平線のみで構成されている場合、それらの画像を 1x として提供し、API がそれらを自動アップスケールするようにします。例は、このようなボタンの画像になります

ここに画像の説明を入力

これにより、アップスケーリングに問題がなく、非常に鮮明に見えます!!! (両方の iPhone と両方の iPad でテスト済み)

[ORIGINAL] 単純に表示用に行う場合、1 つの方法は、単純に画像を網膜のみに提供し、UIImageView が非網膜ディスプレイ用に画像を自動的に縮小できるようにすることです。それはこれを行い、アップルによって拒否されることはありません.

Retina ディスプレイの場合、UIImageView は自然に各方向に 2 倍のピクセルのスペースを占めるため、Retina ディスプレイで表示するために画像を読み込むと、API はスケーリングが必要ないことを認識します!!!

でも気をつけて!!!画像をダウンスケーリングすると、ボタンに効果があり、画像やボタンが汚れた/ピクセル化されたように見えることがあります. これが、両方を提供することが「推奨」される理由です。たとえば、ベクトルベースの画像を使用すると、特定の解像度で最高品質の画像を生成できます。画像をどのように使用するかによって異なります。

補足として。サイズ変更オプションを選択する場合は、デバイスの画面解像度を前もって認識し、ボタンまたは UIImageView などへの初期化時に一度だけ画像のサイズを変更することをお勧めします (私の場合は解像度が小さい場合に必要な場合)。 .. 画面にレンダリングする必要があるたびにパフォーマンスが低下することはありません。

于 2012-06-29T05:11:00.967 に答える
1

聞きたくないかもしれませんが、ペイント ツールを使用することをお勧めします。毎回デバイスで画像のサイズを変更すると、このタスクを実行する頻度によっては、アプリの速度が低下します。@2x 画像が含まれていないという理由で Apple があなたを拒否することはないと思います。以前は問題なく忘れていました。

于 2012-06-29T05:10:02.040 に答える
0

@ 2x画像を含めたくない場合、アプリは網膜と非網膜の両方のiPhoneで機能します。Appleはこれについてあなたのバイナリを拒否するつもりはありません。
唯一の欠点は、網膜用の高品質の画像の代わりに、通常の画像を表示することです。

于 2012-06-29T05:08:02.753 に答える