アプリの読み込み画面とスプラッシュ画面について、iPhone 3、iPhone 4、および iPhone 5 の画像を適切に表示するために、2 つの異なる方法を使い果たしました。
ローディング画面の場合、画像に -568h@2x を追加するだけで、iPhone5 をサポートするのに十分です。
スプラッシュスクリーンでは、一連の (高さ == の場合) ケースを使用して UIScreen の境界の高さを確認し、適切な画像を画像ビューにソースしました。ここで、-568h が iPhone 5 のイメージとして普遍的に認識されていないことは明らかでした。ロード画面にのみ適用されます。
今、私の AppDelegate で、背景画像を設定しています。私のサブビューはすべて透明な背景を持っているので、背景画像まで透けて見えるはずです。ただし、ここで背景画像を設定するのに最も苦労しています。
「Background.png」を渡すだけで、ファイル名の末尾に -568h@2x を追加しても機能しません。Retina 以外のディスプレイと 3.5 インチの Retina ディスプレイには対応しますが、4 インチのディスプレイには対応しません。
すなわち:
self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
上記のコード スニペットを使用すると、iPhone5 の画像の代わりに iPhone4 の画像が使用されますが、これは私が望んでいるものではありません。
スプラッシュスクリーンで行ったのと同じことをしようとしました。私はたくさんのifケースを持っていました:
CGFloat height = [UIScreen mainScreen].currentMode.size.height;
if ( height == 1136 )
{
//Choose image here
}
else if (height == 960)
{
//Choose image here
}
else if (height == 480)
{
//Choose image here
}
self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:chosenImage]];
しかし colorWithPatternImage 関数は、chooseImage が 1 ポイント = 1 ピクセルであると考えます。そのため、iPhone 5 の画面に収まるようにしようとしている網膜以外の画像になってしまいます。正確にはどのように見えますか?私が望んでいた画像の左上の象限だけがiPhone 5の画面全体に表示されているようです。Retina スケーリングが適用されていないようです。
背景として使用する Retina 対応の iPhone 5 画像があることを iPhone が認識できるようにする必要があります。どうすればいいですか?