6

私はviewController.mにバックグラウンドコードを書きました:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]];

そして、私はさまざまな写真の正しい名前を持っています:

image.png for non-retina display (320x480)

image@2x.png for retina display (640x960)

image-568h@2x.png for iPhone 5 (640x1136)

しかし、シミュレーターで実行すると、iPhone 5 画面の image-568h@2x.png は取得されず、4 秒画面の image@2x のみが取得され、画面に合わせてスケーリングされます...存在するかどうかはわかりませんiPhone 5 画面で image-568h@2x を使用するためのコーディングはありますか?

Xcode 4.5を使用しています

4

3 に答える 3

13

iPhone 5 は iPhone 4 や 4S と同様に Retina であり、@2x-image はこれらすべてのデバイスで自動的に使用されます。iPhone 5 で「-568h@2x」と呼ばれるのは起動イメージのみです。別のイメージを使用するには、次のようなコードを記述する必要があります。

NSString *filename = @"image.png";
CGRect screenRect = [[UIScreen mainScreen] bounds];
if (screenRect.size.height == 568.0f)
    filename = [filename stringByReplacingOccurrencesOfString:@".png" withString:@"-568h.png"];

imageView.image = [UIImage imageNamed:filename];
于 2012-10-25T14:21:12.080 に答える
3

[UIImage imageNamed:@"image.png"]iPhone 5 のバンドルから自動的に選択されることを期待して使用しようとしている場合はimage-568h@2x.png、機能しません。自動ピッキングは、iPhone 4 および 4S でのみ機能します。

iPhone 5 では、 as という名前のデフォルト イメージのみDefault-568h@2x.pngが自動的に選択されます。

通常の画像の場合、iPhone 5 用の別の画像がある場合は、このコードを使用してみてください

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
} else {
    // code for 3.5-inch screen
}
于 2012-10-25T14:13:01.600 に答える
2

-568h@2xこのトリックをすべての画像ファイルに適用できると仮定するのは正しくないと思います。にしか効かないと思いますDefault-568h@2x.png。これは、iOS が 4 インチ ディスプレイ デバイスでのアプリの起動時に検索するファイルであり、SDK で 4 インチ ディスプレイ サポートを有効にするための「フラグ」でもあります。たとえば、この特定のファイルを含めると、テーブル ビューが画面いっぱいに表示されます。

-568h@2xファイル名コンポーネントを使用して任意の画像を提供し、それを自動的に使用できることを示唆するものは何も読んでいません。画面サイズに基づいて自分で行う必要があります[UIScreen mainScreen].bounds.size.height

于 2012-10-25T14:12:01.060 に答える