¿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]];