web-dev-qa-db-ja.com

iOS 11のナビゲーションバーの大きなタイトルで、Pop View Controllerをプッシュすると黒い色になる

IOS 11の新しいナビゲーションバーに問題があります。

ルートビューで、コードで新しいナビゲーションを設定します。

if (@available(iOS 11.0, *)) {
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
}

次に、ルートビューから別のビューにプッシュして、コードナビゲーションバーを

if (@available(iOS 11.0, *)) {
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}

それはうまくいきます。ただし、プッシュビューとポップビューでは、次の画像のように黒い色が表示されます。

enter image description here

ナビゲーションバーの背景を設定しなかったにもかかわらず、このビューに黒い色が表示された理由がわかりません。アプリの画面全体で黒い色です。

誰かが問題について何か考えを持っています。そのバグを解決するためのいくつかの提案をドロップしてください。ありがとう。

18
Cuong Nguyen

この問題は、UIViewControllerクラスでナビゲーションコントローラーの背景色を設定することで解決しました。

これが私が使ったコードです:

navigationController?.view.backgroundColor = UIColor.white

ストーリーボードの背景色と影を変更してみましたが、この問題は解決していないようです。うまくいけば、この答えはまだここに関連しています。

26
Sasi Kanth

私はUINavigationControllerをサブクラス化し、そのview.backgroundColorを設定することで、自分のアプリでこれを解決しました。

9
cook

簡単な拡張でこの問題を解決しました

extension UINavigationController {

    @IBInspectable var backgroundColor: UIColor {
        set {
            self.view.backgroundColor = newValue;
        }
        get {
            return self.view.backgroundColor ?? UIColor.black;
        }
    }

}

ストーリーボードから背景色を変更できます!

6