¿Cómo cambiar la image de button de borrado (button x) o al less el color de la image de button de borrado en UISearchbar?

Necesito una barra de búsqueda completamente transparente con button de cancelar. He intentado muchas soluciones pero aún no pude encontrar una solución mejor. Cuando trato de quitar el color de background muestra la barra de scope. ¿Puede alguien darme algún código fuente para la barra de búsqueda completamente transperante con button de lata? Aqui esta

addSearchbar.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5]; UITextField *sbTextField = (UITextField *)[self.addSearchbar.subviews lastObject]; for (UIView *subview in addSearchbar.subviews) { NSLog(@"%@",subview); if ([subview isKindOfClass:[UITextField class]]) { sbTextField = (UITextField *)subview; UIImage *image = [UIImage imageNamed: @"06_magnifying_glass.png"]; UIImageView *iView = [[UIImageView alloc] initWithImage:image]; iView.frame = CGRectMake(0, 0, 24, 24); sbTextField.leftView.frame = CGRectMake(0, 0, 24, 24); sbTextField.leftView = iView; [sbTextField.rightView removeFromSuperview]; CGFloat myWidth = 24.0f; CGFloat myHeight = 24.0f; UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, myWidth, myHeight)]; [myButton setImage:[UIImage imageNamed:@"clear.png"] forState:UIControlStateNormal]; [myButton setImage:[UIImage imageNamed:@"clear.png"] forState:UIControlStateHighlighted]; [myButton addTarget:self action:@selector(doClear:) forControlEvents:UIControlEventTouchUpInside]; sbTextField.rightView = myButton; sbTextField.rightViewMode = UITextFieldViewModeWhileEditing; break; } if([subview isMemberOfClass:[UISegmentedControl class]]) { UISegmentedControl *scopeBar=(UISegmentedControl *) subview; scopeBar.tintColor = [UIColor clearColor]; } } [sbTextField removeFromSuperview]; [addSearchbar addSubview:sbTextField]; [addSearchbar setSearchFieldBackgroundImage:[UIImage imageNamed:@"SearchBar.png"] forState:UIControlStateNormal]; CGRect sbFrame = self.addSearchbar.frame; // Set the default height of a textfield sbFrame.size.height = 31; /* 8 is the top padding for textfield inside searchbar * You may need to add a variable to 8 according to your requirement. */ sbFrame.origin.y = 6+self.addSearchbar.frame.origin.y; sbTextField.frame = sbFrame; sbTextField.textColor = [UIColor lightGrayColor]; [sbTextField setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin]; 

Necesita una barra de búsqueda totalmente transparente con button cancelar y borrar pero sin barra espaciadora.

Gracias por adelantado

A partir de iOS 5.0, puede hacer lo siguiente:

 UIImage *imgClear = [UIImage imageNamed:@"clear"]; [addSearchBar setImage:imgClear forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; 

Eso es. También es posible que desee repetir la línea para el estado UIControlStateHighlighted .

Lo último que debería hacer es cavar dentro de las subvistas de la barra de búsqueda. Se garantiza que se romperá algún día. Use la API adecuada para personalizar cualquier control.

Observe que establezca primero la image de estado UIControlHighlighted y luego la image de estado UIControlStateNormal, o bien podría enfrentar un problema en el que el icono claro no esté establecido en el estado resaltado. (No estoy seguro de por qué ocurre este problema).

 [_searchBar setImage:[UIImage imageNamed:@"ClearIcon"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted]; [_searchBar setImage:[UIImage imageNamed:@"ClearIcon"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; 

Para aquellos de ustedes que intentan esto en Swift (sé que alguien va a venir aquí en busca de esto …) aquí tienes:

  self.searchBar.setImage(UIImage(named: "ico-cancel"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Normal) self.searchBar.setImage(UIImage(named: "ico-cancel"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Highlighted) 

Asegúrese de tener la image correcta en su carpeta Assets.xcassets.

A continuación, le mostramos cómo cambiar la lupa y el icono de button Borrar en UITextField de UISearchBar sin nuevos icons :

 // Reference search display controller search bar's text field (in my case). UITextField *searchBarTextField = [self.searchDisplayController.searchBar valueForKey:@"_searchField"]; // Magnifying glass icon. UIImageView *leftImageView = (UIImageView *)searchBarTextField.leftView; leftImageView.image = [LeftImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; leftImageView.tintColor = [UIColor whiteColor]; // Clear button UIButton *clearButton = [searchBarTextField valueForKey:@"_clearButton"]; [clearButton setImage:[clearButton.imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; clearButton.tintColor = [UIColor whiteColor];