UISearchBar 不会更改 iOS 12.1 的搜索图标和占位符颜色 [英] UISearchBar not changing search icon and placeholder color for iOS 12.1

查看:18
本文介绍了UISearchBar 不会更改 iOS 12.1 的搜索图标和占位符颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了各种方法来更改搜索图标和占位符文本搜索栏的颜色,但没有任何效果.谁能帮帮我!

I have tried every approach to change the color of search icon and placeholder text search bar but nothing worked. Can anyone please help me out!

这是我为搜索栏遵循的实现.

This is the implementation I am following for search bar.

func configureSearchBar() {
    let searchController = UISearchController(searchResultsController: nil)
    searchController.searchBar.delegate = self

    searchController.searchBar.tintColor = .white
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.searchBarStyle = .default
    navigationItem.searchController = searchController

    let textFieldInsideSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
    textFieldInsideSearchBar?.attributedPlaceholder = NSAttributedString(string: "Suche", attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])

    searchController.searchBar.setText(color: .white)
    searchController.searchBar.setTextField(color: UIColor.white.withAlphaComponent(0.2))
    searchController.searchBar.setPlaceholderText(color: .white)
    searchController.searchBar.setSearchImage(color: .white)
    searchController.searchBar.setClearButton(color: .white)
}

extension UISearchBar {

func getTextField() -> UITextField? { return value(forKey: "searchField") as? UITextField }
func setText(color: UIColor) { if let textField = getTextField() { textField.textColor = color } }
func setPlaceholderText(color: UIColor) { getTextField()?.setPlaceholderText(color: color) }
func setClearButton(color: UIColor) { getTextField()?.setClearButton(color: color) }

func setTextField(color: UIColor) {
    guard let textField = getTextField() else { return }
    switch searchBarStyle {
    case .minimal:
        textField.backgroundColor = color
        textField.layer.backgroundColor = color.cgColor
        textField.layer.cornerRadius = 6
    case .prominent, .default: textField.backgroundColor = color
    @unknown default: break
    }
}

func setSearchImage(color: UIColor) {
    guard let imageView = getTextField()?.leftView as? UIImageView else { return }
    imageView.tintColor = color
    imageView.image = imageView.image?.withRenderingMode(.alwaysTemplate)
}

}

推荐答案

试试这个方法它改变了 seachbar 占位符颜色

Try this way it change the seachbar placeholder color

     var searchTextField: UITextField? = searchBar.value(forKey: "searchField") as? UITextField
        if searchTextField!.responds(to: #selector(getter: UITextField.attributedPlaceholder)) {
            let attributeDict = [NSForegroundColorAttributeName: UIColor.white]
            searchTextField!.attributedPlaceholder = NSAttributedString(string: "Search", attributes: attributeDict)
        }

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

这篇关于UISearchBar 不会更改 iOS 12.1 的搜索图标和占位符颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆