2011-08-29 29 views
7

Estoy tratando de cambiar el color de fondo del campo de entrada de UISearchBar. Es la vista redondeada donde ingresa texto para buscar, el color predeterminado es blanco. Me gustaría cambiarlo a grisUISearchBar: cambiar el color de fondo del campo de entrada

Traté:

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

Pero no funciona :(

También probé para insertar una vista de la imagen de campo de texto pero parece que la vista redondeada está separado de TextField por lo tanto, ninguna pista

+0

u debe crear barra de búsqueda en el código no en interfacebuilder.i tuvo el mismo problema al crear desde IB.so u código para crear la barra de búsqueda –

+0

gracias por su respuesta. Lo intentaré – muc

+0

¡AHHHH, lo hice! Configuré textField.background con una imagen y funcionó, ¡yay! – muc

Respuesta

8

observar la función:.?

[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

En Swift 2 y el IOS 9 puede llamar:

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

Swift 3:

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

No funcionó para mí – SunilG

+2

No funcionará si 'searchBarStyle' es' minimal'. – enreas

+0

Como mencionó @enreas, la solución es por lo tanto: http://stackoverflow.com/a/42626728/2229062 – yohannes

2

solución en Swift 3:

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