0

RetinaディスプレイiPhone専用の壁紙アプリを開発しています。legends.jpgビューにプレビューとして表示したい640 x 960 ピクセル サイズの画像があります。ここに私のコードがありloadViewます:

- (void)loadView
{

    // Init the main view first.
    UIView *wallpaperContainerView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    UIImage *wallpaper = [UIImage imageNamed:@"legends.jpg"];

    UIImageView *wallpaperView = [[UIImageView alloc] initWithImage:wallpaper];

    [wallpaperContainerView addSubview:wallpaperView];

    [self setView:wallpaperContainerView]; 
}

私の質問は次のとおりです。

  1. シミュレーター (iPhone Retina 3.5 インチ) で実行すると、画像が画面全体よりも大きく表示され、左上部分のみが表示されます。3.5 インチの iPhone の解像度が 640x960 で、私の画像のサイズと似ているのに、なぜこれが当てはまるのですか? 画像を画面に合わせるには、コードに何を追加すればよいですか?
  2. Retina ディスプレイ iPhoneのみをターゲットにしている場合、すべての画像ファイル名に「@2x」を追加し、「@2x」以外のファイルは除外する必要がありますか?

アップデート

以下の提案のおかげで、legends.png (非網膜用) および legends@2x.png ファイルを作成しました。次に、*wallpaper初期化を次のように変更しました。

UIImage *wallpaper = [UIImage imageNamed:@"legends"];

これは私の#1の質問を完全に解決します。そのため、明らかに JPG を使用するとこのスケーリングの混乱が生じますが、PNG を使用するとすべて正常に動作します。

4

3 に答える 3

1

iPhone Retina スクリーンは 3.5 インチですが、その解像度は非 Retina スクリーンの 2 倍です。そのため、Retina ディスプレイと非 Retina ディスプレイの両方をサポートするための画像リソースを含める必要があります。Retina リソース イメージ名にはサフィックス @2x が必要です。したがって、320x480 (非網膜) および 640x960 (網膜) の解像度の画像を含めると、問題は解決します。

于 2013-09-12T08:49:56.510 に答える
1

イメージの Retina バージョンのファイル名には常に @2x を使用する必要があります。

ところで、今後ファイル名の拡張子を気にする必要がなくなるので、常に PNG 形式を使用するようにしてください。

たとえば、2 つのファイル (normal とサフィックス @2x.png が付いた Retina) がある場合、次のように簡単に記述できます。

[UIImage imageNamed:@"legends"];
于 2013-09-12T08:50:07.870 に答える