web-dev-qa-db-fra.com

Comment changer le texte Couleur du bouton Annuler de UISearchBar dans iOS 7?

Je dois modifier la couleur du texte du bouton Annuler de UISearchBar dans iOS7.

Normalement, UISearchBar Le bouton Annuler textColor est bleu et je souhaite changer textColor en redColor.

enter image description here

Comment puis-je le changer?

35
Fire Fist

J'ai trouvé des réponses à mes propres questions.

Voici le code, ajoutez AppDelegate si vous voulez changer tout le bouton annuler.

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                                                                  [UIColor redColor],
                                                                                                  UITextAttributeTextColor,
                                                                                                  [UIColor whiteColor],
                                                                                                  UITextAttributeTextShadowColor,
                                                                                                  [NSValue valueWithUIOffset:UIOffsetMake(0, 1)],
                                                                                                  UITextAttributeTextShadowOffset,
                                                                                                  nil]
                                                                                        forState:UIControlStateNormal];

Rapide:

let attributes = [NSForegroundColorAttributeName : UIColor.red]
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)
54
Fire Fist

Si vous souhaitez uniquement définir la couleur du texte du bouton, vous n'avez besoin que d'une ligne:

[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor redColor]];
16
s1m0n

Une manière beaucoup plus simple ->

self.searchbar.tintColor = [UIColor darkGrayColor];
12
Kakshil Shah

Tu peux le faire comme ça

[yourSearchBarName setTintColor:[UIColor whateverColorYouWant]];
12
HipHopCoder

Vous pouvez changer les sous-vues de la UISearchBar comme ceci dans - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar

UIView *view = [_searchBar.subviews objectAtIndex:0];
for (UIView *subView in view.subviews) {
    if ([subView isKindOfClass:[UIButton class]]) {
        UIButton *cancelButton = (UIButton *)subView;
        [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [cancelButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    }
}
9
morisunshine

Vous pouvez formater votre bouton d'annulation de la barre de recherche comme suit

[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
    [[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTitle:@"Your Text Here"];

J'espère que cela fonctionne pour vous.

6
BHUPI

Travaillé pour Swift 4 

Utiliser la fonction appearance du module UIAppearance -

Méthode 1: - Afficher le bouton d'annulation au chargement avec searchBar -

let attributes = [NSAttributedStringKey.foregroundColor : UIColor.red]
    UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: .normal)

ou -

Méthode 2: - Afficher la couleur du bouton d'annulation après avoir cliqué sur searchBar -

  UIBarButtonItem.appearance(whenContainedInInstancesOf:[UISearchBar.self]).tintColor = UIColor.red

 enter image description here

5
Jack

Swift 3:  

Utilisez ce code pour définir la couleur rouge (texte, Courser, button)

searchController.searchBar.tintColor = .red

si vous voulez changer la couleur du bouton de suppression en blanc, ajoutez ce code aussi

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.white], for: .normal)
3
Beslan Tularov
[[UISearchBar appearance] setTintColor:[UIColor redColor]];
2
jkyin

Testé sur Swift 4

    let barButtonItem = UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
    barButtonItem.title = NSLocalizedString("Cancel", comment: "")
    barButtonItem.setTitleTextAttributes([.font            : UIFont.systemFont(ofSize: 15.0, weight: .medium),
                                          .foregroundColor : #colorLiteral(red: 0.1960784314, green: 0.1960784314, blue: 0.1960784314, alpha: 1)], for: .normal)
1
Den

Mon approche pour définir indépendamment le curseur et la couleur du bouton est la suivante: J'ai défini la couleur du curseur sur bleu dans le délégué d'application (-application: didFinishLaunchingWithOptions :):

[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTintColor:[UIColor blueColor]];

Utilisez ensuite la couleur de la barre de recherche dans chaque contrôleur pour définir la couleur des boutons. Vous pouvez définir la couleur de teinte même sur le Storyboard.

1
gklka

Pour Swift 3:

self.searchController.searchBar.tintColor = UIColor.white
1
pableiros

Pour Swift 4.2

let attributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(attributes, for: UIControl.State.normal)
1

L'attribut de texte est déconseillé pour IOS 7, utilisez ci-dessous pour IOS 7 ou version ultérieure.

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName : [UIFont fontWithName:@"Helvetica" size:17]} forState:UIControlStateNormal];
0
iOS Developer

Swift 4 

let uiButton = bar.value(forKey: "cancelButton") as? UIButton
uiButton?.setTitle("Cancel", for: .normal)
uiButton?.setTitleColor(UIColor.white,for: .normal)
0
Yifan

Une alternative au UISearchBar serait le SHSearchBar . Ce framework Swift est facilement personnalisable sans piratage, open source, comporte de nombreux tests unitaires et est disponible via Cocoapods . Il faut au moins iOS 8.

0
blackjacx

Pour les personnes utilisant Swift, je devais d'abord ajouter l'extension de Eddie K

Ensuite, j'ai pu l'appeler ainsi (essentiellement ce que Sabo a fait dans la réponse acceptée):

UIBarButtonItem.appearanceWhenContainedWithin(UISearchBar.self).setTitleTextAttributes()
0
ghostatron