在iOS 11之前,我一直使用以下代码自定义UISearchController
搜索栏的外观:
var searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.setDefaultSearchBar()
searchController.searchResultsUpdater = self
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
} else {
tableView.tableHeaderView = searchController.searchBar
}
extension UISearchBar {
func setDefaultSearchBar() {
self.tintColor = UIColor.blue
self.searchBarStyle = .minimal
self.backgroundImage = UIImage(color: UIColor.clear)
let searchBarTextField = self.value(forKey: "searchField") as! UITextField
searchBarTextField.textColor = UIColor.white
searchBarTextField.tintColor = UIColor.blue
searchBarTextField = .dark
}
}
然而,在iOS 11上运行相同的代码时,搜索栏的外观未能更新。
iOS 10:
iOS 11:
到目前为止,对于这个问题的大部分关注都集中在搜索栏的文本颜色上。但我需要考虑更多——背景颜色、色调颜色、搜索指示器、清除按钮颜色等等。