UISearchController iOS 11 Personnalisation
J'avais été en utilisant le code suivant avant iOS 11 pour personnaliser l'apparence de la 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, après avoir mis à jour pour iOS 11 et l'ajout de la UISearchController
dans le cadre de la navigationItem
tout de personnalisation (à l'exception du clavier apparence prouver mon code a été appelé) ne parvient pas à démontrer. Est-ce un bug ou ai-je mis en œuvre de façon incorrecte?
EDIT:
Ci-joint les deux captures d'écran des appareils exécutant iOS 10 (premiers) et iOS 11
EDIT 2: grande partie de l'attention sur cette question jusqu'à présent se concentre sur la couleur du texte de la UISearchBar
. Je suis en train de regarder plus que la couleur de fond, couleur de teinte, de la recherche et indicateur de bouton effacer les couleurs, etc. tous ne sont pas en mesure à être personnalisés à l'aide d'un appareil iOS 11 en dépit d'être parfaitement en mesure de le faire à iOS 10.
- Bien demandé, mais je ne peux pas être surpris si, lorsque vous adoptez la notion de champ de recherche traitées par le biais de la barre de navigation, le moteur d'exécution qui impose son propre regard sur elle. Vous pourriez être en mesure de faire valoir vos personnalisations en retardant jusqu'après l'exécution a eu la chance de configurer la barre de recherche elle-même, mais c'est juste une supposition et il ne me surprendrait pas si ça ne marche pas non plus.
- Vous pouvez obtenir ce genre de personnalisation à l'aide de l'apparence des procurations. Cependant, dans mon expérience, il était bogué - Le bar est exactement ce que je voulais au début, mais quand un autre point de vue contrôleur de cache, il perd les coins arrondis.
- Essayez d'appliquer aspect de la police de champ de recherche (blanc, couleur de police).
- Essayez en ajoutant
searchController.searchBar.tintColor = UIColor.white
Il devrait fonctionner. - La version de iOS11 utilisez-vous? Avez-vous fait un nettoyage complet du Projet? Il peut être un bug de l'OS. Cependant, je vais essayer de le reproduire et de vous donner des commentaires bientôt...! @NishantBhindi il l'a déjà fait...
- Je suis l'aide de la dernière version bêta de l'iOS 11 @AndreaVultaggio
- essayez de définir le navigationItem textColor
- Post un exemple de projet sur GitHub, peut-être vous aura un peu plus d'aide de cette façon.
- J'ai les mêmes problèmes: stackoverflow.com/questions/45997996/...
Vous devez vous connecter pour publier un commentaire.
Je viens de découvrir comment les définir: (avec l'aide de Brandon et Krunal, merci!)
Le bouton "Annuler" texte:
L'icône de recherche:
L'icône effacer:
Le texte de la recherche:
L'espace réservé:
Le fond blanc:
Prises de ici.
value:forKey:
est considéré comme l'accès api privée eaux qui seraient les plus enclins à l'encontre d'Apple t&cDe définir correctement le texte tapé dans la barre de recherche pour blanc utilisation (lors de l'utilisation d'un champ sombre couleur):
Pour définir la zone de texte la couleur de fond
Toutefois, en utilisant quelque chose comme
dans le ci-dessus ne semble pas fonctionner.
Vous devez trouver le
UISearchBar
's sous-jacentUITextField
et de changer la couleur du texte.Avis cela n'a d'effet que lorsque la recherche de contrôleur va présenter (
UISearchControllerDelegate.willPresentSearchController
) ou présentés.Déplacement de l'appel à
setDefaultSearchBar
enviewDidAppear
devrait corriger cet.Essayer le réglage de la barre de recherche de la barre de style.
Si vous avez besoin de changer la couleur de fond de la zone de texte dans la barre de recherche, voir ma réponse ici:
https://stackoverflow.com/a/46315974/1109892
Vous devez accéder à l'objet UITextField à l'intérieur de la UISearchBar. Vous pouvez faire cela en utilisant
OU
Essayer:
searchController.<YOUR SEARCHBAR>.barStyle = .blackOpaque
au lieu deself.searchBarStyle = .minimal
.Ainsi: