Xcode 11ビルドから実行されているiOS 13にのみ適用される奇妙な視覚的なバグがあります。ナビゲーションコントローラーに埋め込まれたテーブルビューで、デフォルトのティントカラーがアプリのプライマリオレンジ色に設定されています。 iOS12では、検索アクションをキャンセルすると、プライマリオレンジのグローバルナビゲーションコントローラーの色に続く[戻る]ボタンが表示されます。これは予想される動作です。以下に示す画像:
ただし、iOS13の同じコードは、次に示すように、システムのデフォルトの青い戻る矢印を生成します。
カスタムアクションでカスタムバーボタンアイテムを作成するなど、その青い戻るボタンを何でも試してオーバーライドしようとしましたが、それは面倒すぎて、単にティントカラーをオーバーライドしたいだけです。明らかなsearchController.searchBar.tintColor = UIColor(named:"Primary")
を試してみましたが、searchControllerは私のUISearchControllerであり、self.navigationControllerティントカラーをオーバーライドしようとしました。私はこのようにSearchBarにネイティブでアクセスしてみました:UISearchBar.appearance().tintColor = UIColor(named:"Primary")
ですが、まだうまくいきません。私はIBで考えられる他のすべてを試しましたが、この戻るボタンの色合いに到達する方法がわかりません。誰か助けてもらえますか?
これは、iOS 13.1にのみ影響するXCode/Swiftのバグであることがわかりました。ユーザーベースのごく一部のみが13.1に残っているため、コードで説明する必要があるものであってはなりません。
これを試して
override func viewWillAppear(_ animated: Bool) {
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
self.navigationItem.backBarButtonItem?.tintColor = .blue
}
IOS 13では、ナビゲーションバーの新しい外観タイプはほとんどありません。大きなタイトルやスクロールビューに関連付けられているナビゲーションバーをカスタマイズする場合は、.scrollEdgeAppearanceの外観パラメーターを設定するだけです。
if #available(iOS 13.0, *) {
let standartAppearence = UINavigationBarAppearance()
standartAppearence.configureWithDefaultBackground()
// Your configuration
UINavigationBar.appearance().scrollEdgeAppearance = standartAppearence
}