web-dev-qa-db-fra.com

Impossible de modifier la couleur de la teinte de la barre de recherche pour la rendre transparente dans iOS 8

Mis à niveau de Xcode 5 à 6, ma teinte dans la barre de recherche est maintenant noire.

J'ai essayé de le changer dans le volet droit du storyboard> "Bar Tint" pour effacer les couleurs, mais il reste noir.

Aussi essayé par programme:

[self.searchBar setTintColor:[UIColor clearColor]];

Toujours noir :(

Des idées?

27
ox_

Tout comme UINavigationBar, la propriété tintColor des barres de recherche modifie la couleur des boutons, ainsi que celle du curseur clignotant et non l'arrière-plan de la barre de recherche. Ce que vous voulez utiliser est la propriété barTintColor.

searchbar.barTintColor = [UIColor orangeColor];
searchbar.tintColor = [UIColor greenColor];

Produit le résultat laid, mais instructif, suivant:

enter image description here

Si vous souhaitez une barre de recherche totalement transparente, vous devez également définir l’image d’arrière-plan:

searchbar.barTintColor = [UIColor clearColor];
searchbar.backgroundImage = [UIImage new];

enter image description here

EDIT: Je déconseille fortement de parcourir et de modifier les sous-vues de l'objet indifférent UIKit, comme cela a été proposé dans d'autres réponses. De la documentation d'Apple:

Pour les vues complexes déclarées dans UIKit et d'autres frameworks système, any les sous-vues de la vue sont généralement considérées comme privées et soumises à changer à tout moment. Par conséquent, vous ne devez pas essayer de récupérer ou modifier les sous-vues pour ces types de vues fournies par le système. Si tu fais, votre code peut tomber lors d'une prochaine mise à jour du système.

https://developer.Apple.com/documentation/uikit/uiview/1622614-subviews

65
Mike

Je dois le changer sur iOS 9 en utilisant Swift 2.0 de cette façon:

    let image = UIImage()

    searchBar.setBackgroundImage(image, forBarPosition: .Any, barMetrics: .Default)
    searchBar.scopeBarBackgroundImage = image
7
darqueos

Sur Swift 3:

Configuration de l’arrière-plan de la barre de recherche pour une image vide:

    searchBar.setBackgroundImage(image, for: .any, barMetrics: .default)
    searchBar.scopeBarBackgroundImage = image
2
Gilad Brunfman

Je vois ce problème aussi bien sur iOS8/XCode 6. Je n'ai pas obtenu la barre de recherche translucide. Le paramètre searchbar.barTintColor ou searchbar.tintColor pour effacer la couleur n'a pas aidé ou affiche une barre de recherche noire. 

La seule solution que j'ai trouvée consistait à définir une image png d'arrière-plan transparente (alpha = 0.0) et à définir searchbar.barTintColor pour effacer la couleur.

0
user3845832