iOS – Personalizar el button Cancelar de UISearchBar

En mi aplicación de iPhone iOS5, estoy configurando el color de tinte de la barra de búsqueda con el siguiente código:

searchBar.tintColor = UIColorMake(@"#EFEFEF"); 

El valor RGB de #efefef es (239,239,239)
Funciona bien Pero cuando aparece el button cancelar, el text "Cancelar" no está visible. ¿Puedo personalizar solo el button cancelar con text transparente en blanco y negro en eso?
¿Es posible personalizar?

Puede search UISearchBar subViews y search el button cancelar, es peligroso hacerlo, ya que el button podría cambiar. Por ejemplo, podría agregar esto en su viewWillAppear . viewWillAppear

 - (void) viewWillAppear:(BOOL)animated { //show the cancel button in your search bar searchBar.showsCancelButton = YES; //Iterate the searchbar sub views for (UIView *subView in searchBar.subviews) { //Find the button if([subView isKindOfClass:[UIButton class]]) { //Change its properties UIButton *cancelButton = (UIButton *)[sb.subviews lastObject]; cancelButton.titleLabel.text = @"Changed"; } } } 

Como dije antes, esto podría cambiar, es un hack para hacerlo, es mejor que te quedes con el original o crea tu propia barra de búsqueda.

Puede personalizar el button Cancelar en iOS 5 utilizando el proxy de apariencia. UIBarButtonItem cambiar el aspecto de UIBarButtonItem cuando está contenido en UISearchBar . Por ejemplo, para cambiar la fuente del título del button Cancelar puede usar:

 NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, [UIFont systemFontOfSize:12], UITextAttributeFont, nil]; [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:attributes forState:UIControlStateNormal]; [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:attributes forState:UIControlStateHighlighted]; 

Desde iOS5 puedes editar la barra de navigation, la barra de herramientas, la barra de tabs y más con este código …

 NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil]; [[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions]; 

No lo he probado con una barra de búsqueda, pero debería funcionar similar.

Este método funciona en IOS7

 for (UIView *view in searchBar.subviews) { for (id subview in view.subviews) { if ( [subview isKindOfClass:[UIButton class]] ) { // customize cancel button UIButton* cancelBtn = (UIButton*)subview; [cancelBtn setEnabled:YES]; break; } } } 

Marque esta https://stackoverflow.com/a/18150826/1767686

Intereting Posts