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;
}
それはうまくいきます。ただし、プッシュビューとポップビューでは、次の画像のように黒い色が表示されます。
ナビゲーションバーの背景を設定しなかったにもかかわらず、このビューに黒い色が表示された理由がわかりません。アプリの画面全体で黒い色です。
誰かが問題について何か考えを持っています。そのバグを解決するためのいくつかの提案をドロップしてください。ありがとう。
この問題は、UIViewControllerクラスでナビゲーションコントローラーの背景色を設定することで解決しました。
これが私が使ったコードです:
navigationController?.view.backgroundColor = UIColor.white
ストーリーボードの背景色と影を変更してみましたが、この問題は解決していないようです。うまくいけば、この答えはまだここに関連しています。
私はUINavigationControllerをサブクラス化し、そのview.backgroundColor
を設定することで、自分のアプリでこれを解決しました。
簡単な拡張でこの問題を解決しました
extension UINavigationController {
@IBInspectable var backgroundColor: UIColor {
set {
self.view.backgroundColor = newValue;
}
get {
return self.view.backgroundColor ?? UIColor.black;
}
}
}
ストーリーボードから背景色を変更できます!