将UISearchBar锁定到像Game Center一样的UITableView的顶部
在Game Center中的UITableViews中有这个很酷的功能,他们在顶部有搜索栏。 与搜索栏放置在表头视图中的应用程序不同(它被视为标准表格单元格),相反,它似乎被螺栓固定到上方的父导航栏中。 所以当滚动表格时,搜索栏确实会移动,但是如果您在表格边界之上滚动,搜索栏永远不会停止触摸导航栏。
有谁知道这可能是怎么完成的? 我想知道苹果是否可以在父滚动视图中同时放置搜索栏和表格,但我想知道它是否可能比这更简单。
Bob的回答是相反的:它应该是MIN(0,scrollView.contentOffset.y)。
此外,为了正确支持调整大小(旋转时会出现这种情况),应重新使用其他帧值。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UISearchBar *searchBar = searchDisplayController.searchBar;
CGRect rect = searchBar.frame;
rect.origin.y = MIN(0, scrollView.contentOffset.y);
searchBar.frame = rect;
}
您可以将searchBar放在表头中并为tableView实现 - (void)scrollViewDidScroll :( UIScrollView *)scrollView委托方法。 做这样的事情应该可行:
-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
searchBar.frame = CGRectMake(0,MAX(0,scrollView.contentOffset.y),320,44);
}
如果您使用了searchDisplayController,则可以使用self.searchDisplayController.searchbar访问搜索栏。
在Swift 2.1和iOS 9.2.1中
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
/* Search controller parameters */
searchController.searchResultsUpdater = self // This protocol allows your class to be informed as text changes within the UISearchBar.
searchController.dimsBackgroundDuringPresentation = false // In this instance,using current view to show the results, so do not want to dim current view.
definesPresentationContext = true // ensure that the search bar does not remain on the screen if the user navigates to another view controller while the UISearchController is active.
let tableHeaderView: UIView = UIView.init(frame: searchController.searchBar.frame)
tableHeaderView.addSubview(searchController.searchBar)
self.tableView.tableHeaderView = tableHeaderView
}
override func scrollViewDidScroll(scrollView: UIScrollView) {
let searchBar:UISearchBar = searchController.searchBar
var searchBarFrame:CGRect = searchBar.frame
if searchController.active {
searchBarFrame.origin.y = 10
}
else {
searchBarFrame.origin.y = max(0, scrollView.contentOffset.y + scrollView.contentInset.top)
}
searchController.searchBar.frame = searchBarFrame
}
链接地址: http://www.djcxy.com/p/55963.html
上一篇: Locking a UISearchBar to the top of a UITableView like Game Center