Je travaille actuellement sur une application qui fonctionnait bien jusqu'à l'arrivée de iOS 7. Auparavant, la barre de recherche était transparente et se fondait dans le fond bleu de la barre de navigation. Maintenant que je travaille dans ios7, la barre de navigation est bleue, mais la barre de recherche a un fond gris. Comment puis-je le rendre bleu ou transparent?
Voici une image:
Essaye ça:
if(IOS_7)
{
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
Vous pouvez définir "Bar Tint" sur "Clear Color" dans Interface Builder (.xib):
Cela peut aussi être fait dans le code:
self.searchBar.barTintColor = [UIColor clearColor];
Pour en faire une couleur unie, il vous suffit de supprimer la vue UISearchBarBackground.
J'ai créé une méthode récursive pour nettoyer correctement la barre de recherche.
- (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view
{
for (UIView *subview in [view subviews]) {
if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[subview removeFromSuperview];
break; //To avoid an extra loop as there is only one UISearchBarBackground
} else {
[self removeUISearchBarBackgroundInViewHierarchy:subview];
}
}
}
Vous pouvez simplement envoyer votre barre de recherche à la méthode et changer la couleur par la suite.
[self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar];
self.searchDisplayController.searchBar.backgroundColor = yourUIColor;
Swift 4.2
Vous pouvez utiliser cette extension pour changer la couleur de la police et de l'arrière-plan de la barre de recherche.
extension UISearchBar {
var textField: UITextField? {
let subViews = subviews.flatMap { $0.subviews }
guard let tf = (subViews.filter { $0 is UITextField }).first as? UITextField else { return nil }
return tf
}
func setTextColor(color: UIColor) {
textField?.textColor = color
}
func setBackgroundColor(color: UIColor) {
textField?.backgroundColor = color
}
}