Avant iOS 11, j'utilisais le code suivant pour personnaliser l'apparence de l'icône UISearchController
barre de recherche :
var searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.setDefaultSearchBar()
searchController.searchResultsUpdater = self
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
tableView.tableHeaderView = searchController.searchBar
}
extension UISearchBar {
func setDefaultSearchBar() {
self.tintColor = UIColor.blue
self.searchBarStyle = .minimal
self.backgroundImage = UIImage(color: UIColor.clear)
let searchBarTextField = self.value(forKey: "searchField") as! UITextField
searchBarTextField.textColor = UIColor.white
searchBarTextField.tintColor = UIColor.blue
searchBarTextField = .dark
}
}
Cependant, l'apparence de la barre de recherche ne se met pas à jour lorsqu'on exécute le même code sur iOS 11.
iOS 10 :
iOS 11 :
Jusqu'à présent, une grande partie de l'attention portée à cette question s'est concentrée sur la couleur du texte de la barre de recherche. Je cherche plus que cela - la couleur de l'arrière-plan, la couleur de la teinte, l'indicateur de recherche, la couleur du bouton d'effacement, etc.
0 votes
Bien demandé, mais je ne peux pas être surpris si, lorsque vous adoptez la notion de champ de recherche géré par la barre de navigation, le runtime lui impose son propre look. Il se peut que vous puissiez imposer vos personnalisations en les retardant jusqu'à ce que le runtime ait eu la possibilité de configurer la barre de recherche elle-même, mais ce n'est qu'une supposition et je ne serais pas surpris que cela ne fonctionne pas non plus.
0 votes
Vous pouvez réaliser ce type de personnalisation en utilisant des mandataires d'apparence. Cependant, d'après mon expérience, c'est un bogue : la barre ressemble exactement à ce que je veux au début, mais lorsqu'un autre contrôleur de vue la cache, elle perd les coins arrondis.
0 votes
Essayez d'appliquer l'apparence de la police au champ de recherche (couleur de police blanche).
0 votes
Essayez en ajoutant
searchController.searchBar.tintColor = UIColor.white
Cela devrait fonctionner.0 votes
Quelle version d'iOS11 utilisez-vous ? Avez-vous fait un nettoyage complet du projet ? Il peut s'agir d'un bug de l'OS. Cependant, je vais essayer de le reproduire et de vous donner un feedback bientôt... ! @NishantBhindi il le fait déjà...
0 votes
J'utilise la dernière version bêta d'iOS 11 @AndreaVultaggio
0 votes
Essayez de définir le textColor de navigationItem
0 votes
Publiez un projet d'exemple sur GitHub, vous obtiendrez peut-être plus d'aide de cette façon.
0 votes
J'ai les mêmes problèmes : stackoverflow.com/questions/45997996/