web-dev-qa-db-fra.com

Couleur de fond de barre de recherche Gris ios7

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:

enter image description here

13
Freddy

Essaye ça:

if(IOS_7)
{
    self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
35
Quang Hà

Vous pouvez définir "Bar Tint" sur "Clear Color" dans Interface Builder (.xib):

enter image description here

Cela peut aussi être fait dans le code:

self.searchBar.barTintColor = [UIColor clearColor];
12
David Douglas

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;
6
Gabriel Cartier

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
    }
}
0
Deniz Mersinlioglu