J'ai un étrange bug visuel dans mon application qui ne s'applique qu'à iOS 13 fonctionnant à partir d'une version Xcode 11. J'ai une vue de table intégrée dans un contrôleur de navigation avec la couleur de teinte par défaut définie sur la couleur orange principale de mon application. Sur iOS12, lorsque vous annulez l'action de recherche, vous êtes présenté avec un bouton de retour qui suit la teinte du contrôleur de navigation global orange primaire. C'est le comportement attendu. Image ci-dessous:
Cependant, ce même code dans iOS13 produit une flèche arrière BLEUE par défaut du système, comme indiqué ci-dessous:
J'ai essayé TOUT pour essayer de remplacer ce bouton de retour bleu, y compris la création d'un élément de bouton de barre personnalisé avec une action personnalisée, mais c'est beaucoup trop compliqué et je veux simplement remplacer la couleur de la teinte. J'ai essayé la searchController.searchBar.tintColor = UIColor(named:"Primary")
évidente où searchController est mon UISearchController, et j'ai essayé de remplacer la couleur de teinte self.navigationController. J'ai essayé d'accéder au SearchBar en mode natif, comme ceci: UISearchBar.appearance().tintColor = UIColor(named:"Primary")
, mais toujours pas de chance. J'ai essayé tout ce à quoi je peux penser dans l'IB, mais je ne sais pas comment atteindre la couleur de teinte de ce bouton arrière. Quelqu'un peut-il aider?
Il s'avère que c'était un bug XCode/Swift n'affectant que iOS 13.1. Cela ne devrait pas être quelque chose que vous devez prendre en compte dans le code, car seule une très petite partie de la base d'utilisateurs est toujours sur 13.1.
essaye ça
override func viewWillAppear(_ animated: Bool) {
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
self.navigationItem.backBarButtonItem?.tintColor = .blue
}
Dans iOS 13, il existe peu de nouveaux types d'apparence pour la barre de navigation. Lorsque vous souhaitez personnaliser la barre de navigation associée à un grand titre ou à tout type de vue de défilement, configurez simplement les paramètres d'apparence pour .scrollEdgeAppearance
if #available(iOS 13.0, *) {
let standartAppearence = UINavigationBarAppearance()
standartAppearence.configureWithDefaultBackground()
// Your configuration
UINavigationBar.appearance().scrollEdgeAppearance = standartAppearence
}