うまくいけば小さな問題のための長いタイトル。
カスタム背景画像を含むUINavigationBarがあります。私のアプリは、縦向きだけでなく横向きもサポートします。ランドスケープは、網膜3インチおよび非網膜スクリーンのシミュレーターでうまく機能します。ただし、網膜4インチ画面では、背景画像は横向きモードでその2倍のサイズで表示されます。
カスタムナビゲーションコントローラーのinit-methodからの関連するコードスニペットは次のとおりです。
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg.png"] forBarMetrics:UIBarMetricsDefault];
if (IS_IPHONE_5)
{
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg-landscape-iphone5.png"] forBarMetrics:UIBarMetricsLandscapePhone];
}
else
{
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg-landscape.png"] forBarMetrics:UIBarMetricsLandscapePhone];
}
IS_IPHONE_5は、次のように定義されたマクロです。
#define WIDTH_IPHONE_5 568
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds].size.height == WIDTH_IPHONE_5)
ここでは、物事をより明確に説明する可能性のある2つの画面フラグメントを示します。アプリをポートレートモードで開くと、すべて問題ありません。
ランドスケープモードに変更すると、すべてが爆発します。
背景画像の横向きバージョンの画像サイズ(ピクセル単位、幅x高さ)は次のとおりです。
- navbar-bg-landscape.png:480x44
- navbar-bg-landscape@2x.png:960x88
- navbar-bg-landscape-iphone5.png:1136x88
それとも、シミュレーターだけの問題でしょうか?(私は現在実際のiPhone 5を持っていません)