Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Locking a UISearchBar to the top of a UITableView like Game Center

There's this cool feature in the UITableViews in Game Center and the search bars they have at their tops. Unlike apps where the search bar is placed in the table header view (so it counts as a standard table cell), instead, it seems to be bolted to the parent navigation bar above it. So when scrolling the table, the search bar does indeed move, but if you scroll above the boundaries of the table, the search bar never stops touching the navigation bar.

Does anyone know how this might have been done? I was wondering if Apple maybe placed both the search bar and the table in a parent scroll view, but I'm wondering if it may be simpler than that.

like image 537
TiM Avatar asked Feb 02 '11 02:02

TiM


1 Answers

Bob's answer is reversed: it ought to be MIN(0, scrollView.contentOffset.y).

Also, in order to properly support resizing (which would occur when rotated), the other frame values should be reused.

-(void)scrollViewDidScroll:(UIScrollView *)scrollView  {     UISearchBar *searchBar = searchDisplayController.searchBar;     CGRect rect = searchBar.frame;     rect.origin.y = MIN(0, scrollView.contentOffset.y);     searchBar.frame = rect; } 
like image 117
LinenIsGreat Avatar answered Oct 03 '22 07:10

LinenIsGreat