No sé cómo modificar el original searchIcon‘s de color.

Cómo cambiar el color de la UISearchBar Icono?

11 Comentarios

  1. 27

    Puede utilizar una imagen personalizada de un blanco icono de búsqueda, como la búsqueda de la barra no va a modificar su suministrado imagen. Para establecer una imagen personalizada, el uso de este método. (Enlace a la documentación.)

    - (void)setImage:(UIImage *)iconImage
    forSearchBarIcon:(UISearchBarIcon)icon
               state:(UIControlState)state;

    Ejemplo De Código:

    [searchBar setImage:[UIImage imageNamed:@"SearchIcon"]
       forSearchBarIcon:UISearchBarIconSearch
                  state:UIControlStateNormal];

    En Swift:

    searchBar.setImage(UIImage(named: "SearchIcon"), for: .search, state: .normal)
    • u puede añadir algún ejemplo ..
    • Nunca he tenido que usar la barra de búsquedas, así que no tiene ejemplo listo para publicar, pero developer.apple.com/library/ios/documentation/UIKit/Reference/…: tal vez esto puede ayudarle a
    • Tal vez este método debe ser mejor: - (UIImage *)imageForSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state
    • ejemplo : [barra de búsquedas setImage:[UIImage imageNamed:@»SearchIconSearch»] forSearchBarIcon:UISearchBarIconSearch estado:UIControlStateNormal];
    • Este es un poco tarde, pero si la gente necesita saber, el icono es 13x13px. El vidrio icono se puede encontrar [aquí](ic8.enlace/7695). el uso de 13×13 para 1x, 26×26 de 2x, y 39×39 de 3x. Sólo pensaba que iba a tirar, ahí afuera
    • Minebomer Que parece un poco pequeño. 24×24 @1x etc. es más pequeño que el defecto en la tarjeta sim.
    • Im bastante seguro de que la imagen se cambia de tamaño, así como el de la imagen es lo suficientemente grande como se escala hacia abajo.

  2. 26

    Mejor solución que encontré fue aquí
    Cambiar el color de los iconos en un UItextField dentro de un UISearchBar

    (Esta solución utiliza la original UISearchBar del icono, no hay necesidad de suministrar su propio gráfica de activos)

    Convertido a 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
        }
    • no funciona ahora, supongo que usted tiene que traer su propia imagen (en caso de utilizar UISeachController)
  3. 7

    Este soultion trabajó para mí en Xcode 8.2.1 en 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
        }
    }

    Ejemplo de uso:

    searchController.searchBar.setPlaceholderTextColorTo(color: mainColor)
    searchController.searchBar.setMagnifyingGlassColorTo(color: mainColor)
  4. 6

    Como por Federica la respuesta….Para hacer esto en swift

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

    Para cambiar el color del icono de búsqueda, sin alterar el icono real en Swift 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
    }

    Crea un resultado así:

    Cómo cambiar el color de la UISearchBar Icono?

    • no funciona en caso de UISearchController
  6. 3

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

    Llamar a estos métodos de extensión como esta:

    searchBarTextField.setMagnifyingGlassColorTo(color: yourColor)
    searchBarTextField.setClearButtonColorTo(color: yourColor)
    searchBarTextField.setPlaceholderTextColorTo(color: yourColor)
  7. 2

    A continuación de algunas de las respuestas que aquí

    Si a usted le gustaría ver y hacer los cambios en el guión gráfico subclase primera UISearch barra y hacer como en el anterior.

    Sin embargo añadir que los cambios en un @IBInspectable variable y no olvidar el @IBDesignable en la parte superior de la clase y la configuración de la barra de búsquedas de la subclase en la «Identidad » inspector»

    He añadido el trabajo completo de la subclase y el código de abajo para swift 3.0
    Aquí usted será capaz de cambiar el marcador de posición de texto, texto de búsqueda y lupa

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

    }

  8. 1

    Asegúrese de que cuando usted utiliza el setImage API, pasar una imagen con el modo de representación de UIImageRenderingModeAlwaysTemplate. Por ejemplo:

    [self.searchBar setImage:[[UIImage imageNamed: @"icon-search"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
  9. 0

    Mi solución:

    searchBar = UISearchBar()
    searchBar.searchBarStyle = .minimal
    searchBar.setTextColor(.white)
    let textField = self.searchBar.getTextField()
    let glassIconView = textField?.leftView as? UIImageView
    glassIconView?.image = glassIconView?.image?.withRenderingMode(.alwaysTemplate)
    glassIconView?.tintColor = .white
    searchBar.showsCancelButton = true
    
    extension UISearchBar {
        func getTextField() -> UITextField? {
            return self.value(forKey: "searchField") as? UITextField
        }
    
        func setTextColor(_ color: UIColor) {
            let textField = getTextField()
            textField?.textColor = color
        }
    }
  10. -2
    if(IOS_7) {
        self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
        self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor redColor] cornerRadius:5.0f];
    }
    • Mientras este fragmento de código se puede resolver la cuestión, , incluyendo una explicación de realmente ayuda a mejorar la calidad de tu post. Recuerde que usted está respondiendo a la pregunta para los lectores en el futuro, y esas personas pueden no saber las razones de su sugerencia de código.

Dejar respuesta

Please enter your comment!
Please enter your name here