Reputation: 3057
I've a UISearchBar
added to the top of an UITableView
.
// init search bar
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.searchBar.tintColor = Config.grayColor()
controller.searchBar.searchBarStyle = UISearchBarStyle.Minimal
self.tableView.tableHeaderView = controller.searchBar
// set content offset for table view in order
// that the searchbar is hidden at the beginning
self.tableView.contentOffset = CGPoint(x: 0, y: controller.searchBar.frame.size.height)
return controller
})()
This basically looks like expected:
But when I enter the search textfield and scroll down the table view it looks weird. The background of the search controller is transparent.
I've tried to set barTintColor
and backgroundColor
but it doesn't have any effect.
Upvotes: 11
Views: 2402
Reputation: 361
the only solution that worked for me in Swift 5:
func viewDidLoad() {
// make content disappear when it touches searchBar
edgesForExtendedLayout = []
// make searchBar color non-transparent
searchBarController.searchBar.backgroundColor = .red
}
Upvotes: 0
Reputation: 1
You can use this code. This works for me:
UITextField.appearance(whenContainedInInstancesOf:
[UISearchBar.self]).backgroundColor = UIColor.RGB(red: 230, green: 230, blue: 230)
UISearchBar
has a UITextField
property and you just change that color like above.
Upvotes: 0
Reputation: 1764
I tested almost everything. The only way that worked for me is:
searchController.searchBar.searchBarStyle = .minimal
searchController.searchBar.setBackgroundImage(UIImage(color: .white), for: UIBarPosition(rawValue: 0)!, barMetrics:.default)
This works in both "normal" and "presented" forms. UIImage(color: .white)
is just a way to create a 1x1 colored image that will be used to fill the background. You can find and implementation here
Upvotes: 2
Reputation: 73
set the searchBar's backgroundColor to white
searchBar.backgroundColor = UIColor.white
Upvotes: 2