1

以下を使用して網膜画像 (@2x.png 拡張子付き) を表示します。

myImage = [UIImage imageNamed:@"iPhoneBackground@2x.jpg"];

UIGraphicsBeginImageContext(myImage.size);
[myImage drawAtPoint: CGPointZero];
myImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

imageView = [[UIImageView alloc] initWithImage:myImage];
NSLog(@"Dimension:%f x %f",myImage.size.width,myImage.size.height);
[self.view addSubview:imageView];

ただし、Retina シミュレーションでは画像が 2 倍のサイズで表示されます。画像とシミュレーターの解像度はどちらも 640 x 960 であるため、画面いっぱいに画像が表示されると思います。
CGContext 以外にも画像を表示する方法があることは知っていますが、これは私のコードで他の目的に必要な方法です。
なぜこの定義の問題があるのですか?

4

2 に答える 2

4

Retina イメージを明示的に読み込む必要はありません。デバイスに Retina ディスプレイがある場合は、@2x がイメージ名に自動的に追加されます。

UIImage コードを次のように変更します。myImage = [UIImage imageNamed:@"iPhoneBackground.jpg"];

于 2013-07-27T18:58:18.157 に答える
4

@2x サフィックスを使用しないでください

アップルのドキュメントから:

UIImage クラスは、高解像度の画像をアプリに読み込むために必要なすべての作業を処理します。新しい画像オブジェクトを作成するときは、同じ名前を使用して、画像の標準バージョンと高解像度バージョンの両方をリクエストします。たとえば、Button.png と Button@2x.png という名前の 2 つの画像ファイルがある場合、次のコードを使用してボタン画像を要求します。

UIImage *anImage = [UIImage imageNamed:@"Button"];

于 2013-07-27T18:58:40.770 に答える