2011-08-29 20 views
7

Sto cercando di cambiare il colore di sfondo del campo di input di UISearchBar. È la vista arrotondata in cui inserisci il testo da cercare, il colore predefinito è bianco. Vorrei cambiare al grigioUISearchBar: modifica del colore di sfondo del campo di input

ho provato:

for (UIView *subView in searchBar.subviews) { 
    if ([subView isKindOfClass:NSClassFromString(@"UITextField")]) { 
     UITextField *textField = (UITextField *)subView; 
     [textField setBackgroundColor:[UIColor grayColor]]; 
    } 

Ma non funziona :(

Ho anche cercato di inserire una visualizzazione dell'immagine per TextField ma sembra che la vista arrotondata è separata dal TextField Così, qualche indizio

+0

u dovrebbe creare la barra di ricerca nel codice non in interfacebuilder.i ha avuto lo stesso problema durante la creazione da IB.so u se codice per creare searchbar –

+0

grazie per la vostra risposta. Lo proverò – muc

+0

AHHHH, l'ho fatto! Ho impostato textField.background con un'immagine e ha funzionato, yay! – muc

risposta

8

sguardo alla funzione:.?

[searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"search_bar"] forState:UIControlStateNormal]; 
8

=)

for (UIView *subView in _searchBar.subviews) { 
    for(id field in subView.subviews){ 
     if ([field isKindOfClass:[UITextField class]]) { 
      UITextField *textField = (UITextField *)field; 
      [textField setBackgroundColor:[UIColor grayColor]]; 
     } 
    } 
} 
2

In Swift 2 e iOS 9 è possibile chiamare:

UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).backgroundColor = UIColor.darkGrey() 

Swift 3:

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = UIColor.darkGrey() 
+1

Non ha funzionato per me – SunilG

+2

Non funzionerà se 'searchBarStyle' è' minimale'. – enreas

+0

Come menzionato da @enreas, la soluzione è quindi: http://stackoverflow.com/a/42626728/2229062 – yohannes

2

Soluzione in Swift 3:

if let txfSearchField = searchController.searchBar.value(forKey: "_searchField") as? UITextField { 
     txfSearchField.borderStyle = .none 
     txfSearchField.backgroundColor = .lightGray 
} 
Problemi correlati