2014-11-19 20 views

Antwort

27

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) 
+0

u kann einige Beispiele hinzufügen .. –

+0

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 –

+0

Vielleicht sollte diese Methode besser sein: '- (UIImage *) imageForSearchBarIcon: (UISearchBarIcon) Symbol Zustand: (UIControlState) state' –

-2
if(IOS_7) { 
    self.searchBar.searchBarStyle = UISearchBarStyleMinimal; 
    self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor redColor] cornerRadius:5.0f]; 
} 
+2

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

5

Per Federicas anwser .... dies in geschickter tun

var image: UIImage = UIImage(named: "search")! 
self.searchBar.setImage(image, forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal) 
1

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

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 
    } 
2

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 

     }  } 
} 

}

0

für schnellen 3

 searchBar.setImage(UIImage(named: "location-icon-black"), for: .search, state: .normal) 
1

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:

altered search bar icon

6

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) 
2

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) 
Verwandte Themen