I want to change my UISearchBar background image.
When adding it as the header view in my UITableView it works perfectly fine. However, when I want to change it for the SearchBar being set as the searchController of the navigationItem it won´t change the background image.
I´m using:
self.searchBar.searchBar.setBackgroundImage(UIImage(named: "#IMAGENAME")?.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .any, barMetrics: UIBarMetrics.default)
Does anybody know how to fix this issue?
You may be looking for this:
if #available(iOS 11.0, *) {
let sc = UISearchController(searchResultsController: nil)
if let navigationbar = self.navigationController?.navigationBar {
navigationbar.barTintColor = UIColor(patternImage: UIImage(named: "pattern")!)
}
navigationItem.searchController = sc
navigationItem.hidesSearchBarWhenScrolling = false
}
Here is image:
And here is result:
Here is more detailed answer, if you want to change any other UI elements of search bar.
- iOS 11 UISearchBar in UINavigationBar
Use the below Code I have used the similar One :
// Objective-c Code
[self.searchDisplayController.searchBar setBackgroundImage:[self imageWithColor:[UIColor yourColor]]
forBarPosition:0
barMetrics:UIBarMetricsDefault];
// Swift Code
self.searchDisplayController.searchBar.setBackgroundImage(self.image(colo
r: UIColor.yourColor), for: UIBarPosition(rawValue: 0)!, barMetrics:.default)
Please let me know the result