Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Background color for UISearchController in UITableView

Tags:

I have a SearchController's search bar inserted programatically into a UITableView's tableHeaderView. When I pull up to view the search bar or refresh the table, I get this weird darker gray that you can see in the following image, in between the refresher activity indicator and the search bar (this background color persists even when I remove the refresher view):

enter image description here

tableView.tableHeaderView = searchController.searchBar

I've tried changing this background color in every way I can think of:

tableView.backgroundColor = UIColor.redColor()
tableView.tableHeaderView!.backgroundColor = UIColor.redColor()
searchController.searchBar.backgroundColor = UIColor.redColor()
view.backgroundColor = UIColor.redColor()

Nothing works. This dark gray isn't one of the custom colors I use in my project so I know I didn't set it manually. As soon as I take out the searchController everything works just like before: that dark gray is replaced by the lighter gray seen everywhere else.

like image 384
Ryan Bobrowski Avatar asked Jul 16 '15 19:07

Ryan Bobrowski


3 Answers

Set the UITableView's backgroundView to a new useless view:

    self.tableView.backgroundView = [UIView new];

Seems illogical, but works like a charm :)

like image 96
Cameron E Avatar answered Oct 11 '22 09:10

Cameron E


Cameron E's correct answer in Swift:

tableView.backgroundView = UIView()

Note that self.tableView.backgroundView = nil does not work.

like image 20
BAP Avatar answered Oct 11 '22 07:10

BAP


Try this:

[searchController.searchBar setBarTintColor:[UIColor blackColor]];
[searchController.searchBar setTintColor:[UIColor whiteColor]];

Hope this helps.

like image 40
sancho Avatar answered Oct 11 '22 09:10

sancho