Question

Many of the table searches I see actually dim (change alpha?) of the actual tableView when the search bar gets focused. I am trying to implement this.

When I overload

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar

I am trying to do something like

self.tableView.alpha = .5f

But it is changing the alpha of the actual searchBar (if I have searchBar on its own) or changing the alpha of the entire table (including searchBar) if I have searchBar underneath the tableView in IB.

What am I doing wrong here. How can I just Dim the table and not everything.

I guess what I am really failing to understand is how all this stuff gets layered on the screen.

EDIT: The contacts application is a good example of what I am trying to do.

Was it helpful?

Solution

Most such apps just throw a black-background UIView on top of the table and fade it in (to an alpha of .5 or whatever) when the search bar gains focus.

OTHER TIPS

If you use UISearchDisplayController, you get this behavior for free.

Since iOS 8 (and up to at least iOS 9.2) you would use a UISearchController. Unfortunately, currently the interface builder supports only the now deprecated UISearchDisplayController. So, this is how to add it programmatically to your table view controller, including the dim effect:

let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
    super.viewDidLoad()

    // Use the current view controller to update the search results:
    self.searchController.searchResultsUpdater = self
    self.searchController.dimsBackgroundDuringPresentation = true
    self.tableView.tableHeaderView = searchController.searchBar
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top