ios7 uisearchbar textcolor

¿Cómo cambiar el botón textColor of Cancel de UISearchBar en iOS7?



(16)

Encontré respuestas para mis propias preguntas.

Aquí está el código, agregue AppDelegate si desea cambiar todo el botón de cancelar.

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

Rápido:

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

Necesito cambiar el color del texto del botón Cancelar de UISearchBar en iOS7.

Normalmente, el botón UISearchBar Cancel textColor es azul y quiero cambiar textColor a redColor .

¿Cómo puedo cambiarlo?


Mi enfoque para establecer el cursor y el color del botón de forma independiente es este: configuré el color del cursor en azul en el delegado de la aplicación (-application: didFinishLaunchingWithOptions :):

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

Y luego use el color del tinte de la barra de búsqueda en cada controlador para configurar el color de los botones. Puede establecer el color del tinte incluso en el Guión gráfico.


Para Swift 3:

self.searchController.searchBar.tintColor = UIColor.white


Para las personas que usan Swift, primero tuve que agregar la extensión de Eddie K

Luego pude llamarlo así (básicamente lo que hizo Sabo en la respuesta aceptada):

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


Probado en 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)


Puede cambiar las subvistas de UISearchBar como esta en - (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]; } }


Puede formatear el botón Cancelar de la barra de búsqueda de la siguiente manera

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

Espera que funcione para ti.


Puedes hacerlo así

[yourSearchBarName setTintColor:[UIColor whateverColorYouWant]];


Si solo desea establecer el color del texto del botón, solo necesita una línea:

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


Swift 4

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


Trabajó para SWIFT 4

Use la función de UIAppearance módulo UIAppearance -

Método 1: - Mostrar el botón Cancelar al cargar con searchBar -

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

o -

Método 2: - Mostrar el color del botón de cancelar después de searchBar clic en la searchBar -

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


UITextAttribute está privado del uso de IOS 7 a continuación para iOS 7 o posterior

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


Una alternativa a UISearchBar sería SHSearchBar . Este marco rápido es fácilmente personalizable sin piratería, de código abierto, tiene muchas pruebas unitarias y está disponible a través de Cocoapods . Necesita al menos iOS 8.


Una forma mucho más simple ->

self.searchbar.tintColor = [UIColor darkGrayColor];


Swift 3:

Use este código para establecer el color rojo (texto, cursiva, botón)

searchController.searchBar.tintColor = .red

si desea cambiar el color del botón de cancelar a blanco, agregue este código también

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.white], for: .normal)


[[UISearchBar appearance] setTintColor:[UIColor redColor]];