我想以与标准Mail应用程序的UISearchBar完全相同的方式显示和隐藏UITableView标头(UITextField),但是无法弄清楚如何实现该行为。
与我相关的行为如下:
即使表格内容(行)没有填满整个视图,关键是能够将标题回滚到视线之外。
我已经尝试过设置contentOffset,虽然我可以通过这样做隐藏第一个视图的标题,但是当表内容(行)没有填满整个表格视图时,标题无法向后滚动这种方法。
有人可以提供任何建议吗?
答案 0 :(得分:0)
你有没有得到你想要的东西?我从一段时间以来的代码中得到了这个,这就是你所要求的。下拉40px时,在标题中显示搜索栏。当桌面向上滚动40px时隐藏在导航栏下。
搜索是我在搜索栏处于活动状态时设置的iVar标志。
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
CGFloat amountOfDrag = scrollView.contentOffset.y;
UIEdgeInsets edgeAtEntry = self.tableView.contentInset;
UIEdgeInsets edgeSetNew;
CGFloat underlay = self.topLayoutGuide.length;
CGFloat searchBarViewHeight = 44.0f;
BOOL needsReset = NO;
if (amountOfDrag <= -40 && edgeAtEntry.top == underlay - searchBarViewHeight) {
needsReset = YES;
edgeSetNew = UIEdgeInsetsMake(0.0f + underlay, 0.0f, self.bottomLayoutGuide.length, 0.0f);
} else if (amountOfDrag >= 40 && edgeAtEntry.top != underlay - searchBarViewHeight) {
needsReset = YES;
edgeSetNew = UIEdgeInsetsMake(-searchBarViewHeight + underlay, 0.0f, self.bottomLayoutGuide.length, 0.0f); //hides searchbar under navbar
}
if (needsReset && !searching) {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2];
scrollView.contentInset = edgeSetNew;
[UIView commitAnimations];
}
}