如何自定义UISearchController?

时间:2018-10-20 11:53:46

标签: swift

我在应用程序中使用了UISearchController,但是我找不到自定义它的方法。我在Stackoverflow中看过这里,但是没有一个确定的答案对我有用。我尝试在更多的地方寻找,但没有任何效果。 这是我的代码:

    import UIKit

class MainVC: UIViewController {


    lazy var mSearchBarController: UISearchController = {
        let mSearchBar = UISearchController(searchResultsController: nil)
        mSearchBar.searchBar.barStyle = .default
        mSearchBar.searchBar.placeholder = "enter city here"
        mSearchBar.searchBar.tintColor = UIColor.white

        return mSearchBar
    }()

    override func viewDidLayoutSubviews() {
        setupSearchBar()
    }
    override func viewDidLoad() {

        super.viewDidLoad()
        view.backgroundColor = UIColor(red: 80/255, green: 135/255, blue: 179/255, alpha: 1.0)
        setupNavBar()
        self.navigationItem.searchController = mSearchBarController

    }

    private func setupNavBar(){
        navigationItem.title = "Home"
        navigationController?.navigationBar.prefersLargeTitles = true
        navigationItem.hidesSearchBarWhenScrolling = true
    }

    private func setupSearchBar(){
        let mSearchTextField = mSearchBarController.searchBar.value(forKey: "searchField") as? UITextField
        mSearchTextField?.textColor = UIColor(red: 255/255, green: 245/255, blue: 139/255, alpha: 1.0)

        let mAttributedPlaceholder = NSMutableAttributedString(string: "enter city here", attributes: [NSAttributedString.Key.foregroundColor : UIColor(red: 255/255, green: 245/255, blue: 139/255, alpha: 1.0)])
        mSearchTextField?.attributedPlaceholder = mAttributedPlaceholder

        for view in mSearchBarController.searchBar.subviews {
            for subview in view.subviews {
                if let textField = subview as? UITextField {
                    textField.backgroundColor = UIColor.red
                    textField.textColor = UIColor.white
                }
            }
        }
    }
}

我找不到改变searchBar textColor 或更改它的 backgroundColor 的方法。 这就是我得到的:

enter image description here

1 个答案:

答案 0 :(得分:0)

请参见我使用此简单代码更改seacrhBar的 textColor backgroundColor

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var searchBar: UISearchBar!


override func viewDidLoad() {
    super.viewDidLoad()


    for view in searchBar.subviews {
        for subview in view.subviews {
            if let textField = subview as? UITextField {
                textField.backgroundColor = UIColor.red
                textField.textColor = UIColor.white
            }
        }
    }
}

作为参考,您可以检查:-

How can I change the UISearchBar search text color?(用于文本颜色)

http://jitu1990.blogspot.com/2017/06/textcolor-and-backgroundcolor.html(用于backgorund颜色)