我有一个UITableView,目前正在努力在顶部添加一个自定义搜索栏,其中包括一个带有UITextField的UIView。按照iOS应用的标准,只有在表格 View 滚动到顶部时,搜索栏才是可见的;向下滚动时,搜索栏应与其他单元格一起消失在屏幕上。
但是,我无法找到实现此效果的方法。如果我将搜索栏放在表格 View 的顶部,它将覆盖其下方的单元格。如果将其放置在表格 View 上方50像素处,则用户将无法选择它,因为当用户从屏幕上松开手指时,它将自动消失。
有人可以启发我如何达到这种效果吗?
最佳答案
通常,您只将UISearchBar
用作表 View 的tableViewHeader
。如果您希望在用户进入屏幕时将其隐藏(就像在大多数 native 应用程序中所做的那样),则只需在contentOffset
中为tableView
设置viewWillAppear
即可。
而且我很确定这实际上就是他们的做法。如果考虑一下,这就是tableHeaderView
的意思。
尝试这样的事情:
- (void)viewDidLoad
{
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0., 0., 320., 44.)];
self.tableView.tableHeaderView = searchBar;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
CGPoint contentOffset = self.tableView.contentOffset;
contentOffset.y += CGRectGetHeight(self.tableView.tableHeaderView.frame);
self.tableView.contentOffset = contentOffset;
}
请注意,在iOS 7中,如果
contentOffset
的tableView
设置为CGPointMake(0., CGRectGetHeight(self.tableView.tableHeaderView.frame))
,则不应仅将viewController
的automaticallyAdjustsScrollViewInsets
设置为YES
,因为在CGPointZero
中可能不会将viewWillAppear:
设置为ojit_code。关于ios - 在UITableView的顶部添加搜索栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22869649/