web-dev-qa-db-ja.com

iOS 11のナビゲーションバーに大きなタイトルを使用しているときに、ステータスバーの背景色を変更する

IOS11で新しいnavigationBarの大きなタイトル機能を使用しようとしています。

ただし、次の行を追加した後:

self.navigationController?.navigationBar.prefersLargeTitles = true

ナビゲーションバーの背景色が黒に変わったことがわかりました。

Navigation Bar 1

そこで、背景色を手動で再度設定しました。

self.navigationController?.setBackgroundColor(UIColor(hexString: 0xFF7E79))

ただし、statusBarの背景色は変更されていないことがわかりました。

Navigation Bar 2

このコードでstatusBarの背景色を設定した後:

guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return 
statusBar.backgroundColor = UIColor(hexString: 0xFF7E79)

StatusBarとnavigationBarの間に次のような醜い1pxの黒い線が表示されます。

Navigation Bar 3

では、navigationBarの背景色を設定する正しい方法は何ですか?

9
David

UINavigationBarの背景色を設定する正しい方法は、barTintColorプロパティを使用することです。

self.navigationController?.navigationBar.barTintColor = .red

設定した色が少し色あせていることに気付くかもしれません。ドキュメントに記載されているように:

isTranslucentプロパティをfalseに設定しない限り、この色はデフォルトで半透明になります。

developer.Apple.comのbarTintColorリファレンスを参照してください

6
Moshe Gutman