example delegate custom bar ios swift uisearchbar

ios - delegate - uisearchbar swift 4



Cómo cambiar el color del botón ''Cancelar'' en la barra de UISearch en Swift (10)

He añadido una UISearchBar en la parte superior de mi PFQueryTableViewController . He cambiado el color de la barra de búsqueda para que sea el color de mi aplicación, pero al hacer esto, también parece haber cambiado el color del botón ''Cancelar'' a la derecha de la misma al mismo color. Idealmente, quiero que el color sea blanco.

Esta imagen muestra cómo se ve actualmente:

Parece que no hay un botón ''Cancelar'', pero sí, tiene el mismo color que la barra de búsqueda (todavía puedes presionarlo, etc.)

¿Hay alguna manera de cambiar el color de este botón ''Cancelar'' a blanco? Todo lo que he intentado parece no hacer ninguna diferencia.

Código que he usado para hacer de la UISearchBar este color es:

UISearchBar.appearance().barTintColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1) UISearchBar.appearance().tintColor = UIColor(hue: 359/360, saturation: 67/100, brightness: 71/100, alpha: 1)

Y en el guión gráfico he puesto estos:

Y finalmente, para hacer que el marcador de posición, y el texto en blanco dentro de SearchBar, he usado:

for subView in self.filmSearchBar.subviews { for subsubView in subView.subviews { if let searchBarTextField = subsubView as? UITextField { searchBarTextField.attributedPlaceholder = NSAttributedString(string: NSLocalizedString("Search Cinevu film reviews", comment: ""), attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()]) searchBarTextField.textColor = UIColor.whiteColor() } } }

¡Gracias por cualquier ayuda! :)


Base en el código de Nick89, cambié así para Swift 3.1

let cancelButtonAttributes: [String: AnyObject] = [NSForegroundColorAttributeName: UIColor.white] UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)

Quiero cambiar en UISearchBar solo en lugar de todo UIBarButton, así que estoy usando como UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])


Con la cadena de herramientas Swift 4.0 RELEASE 2017-09-19, esto funcionó:

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


La versión Swift 4.2, basada en otras respuestas:

let cancelButtonAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue): UIColor.orange] UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes(cancelButtonAttributes, for: .normal)


Mirando alrededor, esta parecía ser la mejor manera de lograr lo que necesitaba:

let cancelButtonAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white] UIBarButtonItem.appearance().setTitleTextAttributes(cancelButtonAttributes , for: .normal)


Sé que esta pregunta tiene suficientes respuestas, pero aquí hay una forma sencilla de lograrlo: el color de fondo de la barra de búsqueda y el color de fondo del botón Cancelar podemos cambiarlo directamente en el guión de atributos del guión gráfico.

para el color de fondo de SearchBar

para el botón de cancelar SearchBar color


Todas las respuestas anteriores no funcionaron para mí. (Got ''Type'' NSAttributedString.Key ''(alias'' NSString '') no tiene ningún miembro'' foregroundColor '''' error)

Tal vez porque estoy en Swift 3 ...

Aquí está el código ligeramente modificado que funcionó para mí:

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

Nota:-

Si está utilizando UISearchController, inserte este código en ''willPresentSearchController:'' o ''didPresentSearchController:''


Use esta única línea en el código para cambiar el color del botón de cancelar:

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

Registrado en Xcode 9.2 con Swift 4.0


probaste UISearchBar.appearance (). tintColor = UIColor.whiteColor ()


Swift 4.2, 4.1

Una clase personalizada agregada here se puede usar para personalizar los elementos más comunes en un searchBar. La clase personalizada SearchBar puede dar como resultado la siguiente barra de búsqueda.


Swift 4.2

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.black], for: .normal)