3

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?

Eric Aya
  • 69,473
  • 35
  • 181
  • 253
ktm125
  • 442
  • 5
  • 21

2 Answers2

2

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:

enter image description here

And here is result:

enter image description here

Here is more detailed answer, if you want to change any other UI elements of search bar.

Krunal
  • 77,632
  • 48
  • 245
  • 261
  • 1
    Thank you so much! I've been looking for this answer for a long time! – nomadoda Jan 25 '18 at 13:14
  • For those who have Search Bar in the Navigation Bar try Replacing : `navigationItem.searchController = sc` *with ->* `navigationItem.titleView = sc.searchBar`. – Yash Bedi Apr 26 '18 at 10:22
-1

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

Shubham Narang
  • 514
  • 2
  • 14