Ich weiß nicht, wie man die ursprüngliche searchIcon
Farbe ändert.Wie ändert man die Farbe des UISearchBar Icons?
Antwort
Sie können ein eigenes Bild von einem weißen Suchsymbol verwenden, da die Suchleiste nicht Ihr geliefertes Bild ändern. Verwenden Sie diese Methode, um ein benutzerdefiniertes Bild festzulegen. (Link to documentation.)
- (void)setImage:(UIImage *)iconImage
forSearchBarIcon:(UISearchBarIcon)icon
state:(UIControlState)state;
Beispielcode:
[searchBar setImage:[UIImage imageNamed:@"SearchIcon"]
forSearchBarIcon:UISearchBarIconSearch
state:UIControlStateNormal];
In Swift:
searchBar.setImage(UIImage(named: "SearchIcon"), for: .search, state: .normal)
if(IOS_7) {
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor redColor] cornerRadius:5.0f];
}
Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – gunr2171
Per Federicas anwser .... dies in geschickter tun
var image: UIImage = UIImage(named: "search")!
self.searchBar.setImage(image, forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)
Stellen Sie sicher, dass bei Verwendung der API setImage
ein Bild mit dem Wiedergabemodus UIImageRenderingModeAlwaysTemplate
übergeben wird. Zum Beispiel:
[self.searchBar setImage:[[UIImage imageNamed: @"icon-search"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
beste Lösung, die ich hier war gefunden Changing the color of the icons in a UItextField inside a UISearchBar
(Diese Lösung des Originals UISearchBar Symbol verwendet, keine Notwendigkeit, Ihre eigene grafische Asset zu liefern)
Umgewandelt in Swift (Swift 3):
if let textFieldInsideSearchBar = self.searchBar.value(forKey: "searchField") as? UITextField,
let glassIconView = textFieldInsideSearchBar.leftView as? UIImageView {
//Magnifying glass
glassIconView.image = glassIconView.image?.withRenderingMode(.alwaysTemplate)
glassIconView.tintColor = .whiteColor
}
Im Anschluss an einige der Antworten auf hier
Wenn Sie die Änderungen in Storyboard erste Unterklasse UISearch Bar sehen und machen möchten, und tun Sie wie oben.
jedoch die Änderungen in einer @IBInspectable Variable hinzufügen und nicht die @IBDesignable an der Spitze der Klasse zu vergessen und die searchbar Unterklasse in dem „Identität Inspektoren“ -Einstellung
Ich habe die volle Arbeitsunterklasse und nachfolgenden Code hinzugefügt für eine schnelle 3.0 Hier können Sie den Platzhalter Text ändern, Text und Lupe suchen
import UIKit
@IBDesignable
class CustomSearchBar: UISearchBar {
@IBInspectable var placeholderColor: UIColor? {
didSet {
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
let textFieldInsideSearchBarLabel = textFieldInsideSearchBar!.value(forKey: "placeholderLabel") as? UILabel
textFieldInsideSearchBarLabel?.textColor = placeholderColor
}
}
@IBInspectable var textColor: UIColor? {
didSet {
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.textColor = textColor
}
}
@IBInspectable var magnifyingGlassColor: UIColor? {
didSet {
if let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField,
let glassIconView = textFieldInsideSearchBar.leftView as? UIImageView {
//Magnifying glass
glassIconView.image = glassIconView.image?.withRenderingMode(UIImageRenderingMode.alwaysTemplate)
glassIconView.tintColor = magnifyingGlassColor
} }
}
}
für schnellen 3
searchBar.setImage(UIImage(named: "location-icon-black"), for: .search, state: .normal)
Für nur die Farbe des Suchsymbols zu ändern, ohne in Swift das eigentliche Symbol verändern 3:
if let textField = self.searchBar.value(forKey: "searchField") as? UITextField,
let iconView = textField.leftView as? UIImageView {
iconView.image = iconView.image?.withRenderingMode(UIImageRenderingMode.alwaysTemplate)
iconView.tintColor = UIColor.red
}
ein Ergebnis wie so Erzeugt:
Diese soultion arbeitete für mich auf Xcode 8.2.1 in Swift 3.0.
extension UISearchBar
{
func setPlaceholderTextColorTo(color: UIColor)
{
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.textColor = color
let textFieldInsideSearchBarLabel = textFieldInsideSearchBar!.value(forKey: "placeholderLabel") as? UILabel
textFieldInsideSearchBarLabel?.textColor = color
}
func setMagnifyingGlassColorTo(color: UIColor)
{
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
let glassIconView = textFieldInsideSearchBar?.leftView as? UIImageView
glassIconView?.image = glassIconView?.image?.withRenderingMode(.alwaysTemplate)
glassIconView?.tintColor = color
}
}
Anwendungsbeispiel:
searchController.searchBar.setPlaceholderTextColorTo(color: mainColor)
searchController.searchBar.setMagnifyingGlassColorTo(color: mainColor)
Swift-3:
extension UISearchBar
{
func setMagnifyingGlassColorTo(color: UIColor)
{
// Search Icon
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
let glassIconView = textFieldInsideSearchBar?.leftView as? UIImageView
glassIconView?.image = glassIconView?.image?.withRenderingMode(.alwaysTemplate)
glassIconView?.tintColor = color
}
func setClearButtonColorTo(color: UIColor)
{
// Clear Button
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
let crossIconView = textFieldInsideSearchBar?.value(forKey: "clearButton") as? UIButton
crossIconView?.setImage(crossIconView?.currentImage?.withRenderingMode(.alwaysTemplate), for: .normal)
crossIconView?.tintColor = color
}
func setPlaceholderTextColorTo(color: UIColor)
{
let textFieldInsideSearchBar = self.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.textColor = color
let textFieldInsideSearchBarLabel = textFieldInsideSearchBar!.value(forKey: "placeholderLabel") as? UILabel
textFieldInsideSearchBarLabel?.textColor = color
}
}
nennen diese Erweiterung Methode wie folgt:
searchBarTextField.setMagnifyingGlassColorTo(color: yourColor)
searchBarTextField.setClearButtonColorTo(color: yourColor)
searchBarTextField.setPlaceholderTextColorTo(color: yourColor)
u kann einige Beispiele hinzufügen .. –
Ich musste nie SearchBar verwenden, also habe ich nicht examp le bereit zum Posten, aber https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchBar_Class/#/apple_ref/occ/instm/UISearchBar/setImage:forSearchBarIcon:state: vielleicht kann Ihnen das helfen –
Vielleicht sollte diese Methode besser sein: '- (UIImage *) imageForSearchBarIcon: (UISearchBarIcon) Symbol Zustand: (UIControlState) state' –