UISearchController iOS 11 Customization

后端 未结 9 1280
南旧
南旧 2021-01-29 21:40

I had been using the following code prior to iOS 11 to customize the appearance of the UISearchController search bar:

var searchController = UISearc         


        
9条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-29 22:20

    You need to find the UISearchBar's underlying UITextField and change its text color.

    Notice this only have effect when search controller is going to present (UISearchControllerDelegate.willPresentSearchController) or presented.

    class ViewController : UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // setup your search controller...
    
            // set search controller's delegate
            navigationItem.searchController?.delegate = self
        }
    }
    
    extension ViewController : UISearchControllerDelegate {
    
        func willPresentSearchController(_ searchController: UISearchController) {
            // update text color
            searchController.searchBar.textField?.textColor = .white
        }
    }
    
    extension UISearchBar {
    
        var textField: UITextField? {
            for subview in subviews.first?.subviews ?? [] {
                if let textField = subview as? UITextField {
                    return textField
                }
            }
            return nil
        }
    }
    

提交回复
热议问题