2

iOS 8 で、次の状況のいずれかでナビゲーション バーの間違った背景画像が表示されるという問題に遭遇しました。

  • ビュー コントローラー ベースのステータス バーの外観はYES(既定) に設定され、ナビゲーション コントローラーはモーダルに表示されます。
  • ビュー コントローラ ベースのステータス バーの外観が に設定されNO、ステータス バーは最初は非表示になっています。この場合、間違った画像を表示するためにナビゲーション コントローラーをモーダルに表示する必要はありません。

ビュー コントローラー ベースのステータス バーの外観が YES (既定値) に設定され、ナビゲーション コントローラーがモーダルに表示される問題を特定するために、次の手順に従ってテスト プロジェクトを最初から作成しました。

  1. 「Master-Detail Application」テンプレートを使用して新しいプロジェクトを作成します。

  2. Main.storyboardナビゲーション コントローラーを開いて追加します。ルート ビュー コントローラーを削除し、マスター ビュー コントローラーをモーダル セグエに接続します。次に、詳細ビュー コントローラーをルート ビュー コントローラーとして接続します。次のような結果になるはずです。

ここに画像の説明を入力

  1. 外観プロキシを介してナビゲーション バーの背景をカスタマイズします。縦向き ( 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;
    }
    
  2. アプリを実行します。マスター ビュー コントローラーは、縦向きと横向きの右ナビゲーション バーの背景画像を表示します。

ここに画像の説明を入力

ここに画像の説明を入力

  1. Detail View Controller をモーダルに表示します。これを行うには、[追加] ボタンをタップして、新しく作成した行を選択します。詳細ビュー コントローラーは、右側のナビゲーション バーの背景画像を表示します。

  2. インターフェースを回転させます。詳細ビュー コントローラーは、ナビゲーション バーの背景画像を変更しません(間違っています)。

ここに画像の説明を入力

  1. インターフェースを回転させて元の向きに戻します。詳細ビュー コントローラーは、ナビゲーション バーの背景画像を変更します (間違っています)。

ここに画像の説明を入力

他の誰かがこれに苦労しましたか?

4

1 に答える 1