iOS 8 で、次の状況のいずれかでナビゲーション バーの間違った背景画像が表示されるという問題に遭遇しました。
- ビュー コントローラー ベースのステータス バーの外観は
YES
(既定) に設定され、ナビゲーション コントローラーはモーダルに表示されます。 - ビュー コントローラ ベースのステータス バーの外観が に設定され
NO
、ステータス バーは最初は非表示になっています。この場合、間違った画像を表示するためにナビゲーション コントローラーをモーダルに表示する必要はありません。
ビュー コントローラー ベースのステータス バーの外観が YES (既定値) に設定され、ナビゲーション コントローラーがモーダルに表示される問題を特定するために、次の手順に従ってテスト プロジェクトを最初から作成しました。
「Master-Detail Application」テンプレートを使用して新しいプロジェクトを作成します。
Main.storyboard
ナビゲーション コントローラーを開いて追加します。ルート ビュー コントローラーを削除し、マスター ビュー コントローラーをモーダル セグエに接続します。次に、詳細ビュー コントローラーをルート ビュー コントローラーとして接続します。次のような結果になるはずです。
外観プロキシを介してナビゲーション バーの背景をカスタマイズします。縦向き (
UIBarMetricsDefault
) と横向き (UIBarMetricsCompact
) の 2 つの異なる画像を使用します。UIImage
単色から画像を作成するためにカテゴリを使用しました。- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor blueColor]] forBarMetrics:UIBarMetricsCompact]; return YES; }
アプリを実行します。マスター ビュー コントローラーは、縦向きと横向きの右ナビゲーション バーの背景画像を表示します。
Detail View Controller をモーダルに表示します。これを行うには、[追加] ボタンをタップして、新しく作成した行を選択します。詳細ビュー コントローラーは、右側のナビゲーション バーの背景画像を表示します。
インターフェースを回転させます。詳細ビュー コントローラーは、ナビゲーション バーの背景画像を変更しません(間違っています)。
- インターフェースを回転させて元の向きに戻します。詳細ビュー コントローラーは、ナビゲーション バーの背景画像を変更します (間違っています)。
他の誰かがこれに苦労しましたか?