我有一个 UITableView,目前正在努力在顶部添加一个自定义搜索栏,该搜索栏由一个 UIView 组成,其中包含一个 UITextField。作为 iOS 应用程序的标准,搜索栏应该只在表格 View 滚动到顶部时可见——向下滚动时它应该与其他单元格一起从屏幕上消失。
但是,我想不出实现这种效果的方法。如果我将搜索栏放在表格 View 的顶部,它将覆盖其下方的单元格。如果我将它放在表格 View 上方 50 像素处,用户将无法选择它,因为当用户从屏幕上松开手指时它会自动消失。
谁能告诉我如何实现这种效果?
最佳答案
通常,您只需将 UISearchBar
用作表格 View 的 tableViewHeader
。如果你想在用户进入屏幕时隐藏它(就像在大多数 native 应用程序中所做的那样),你可以为 viewWillAppear
中的 tableView
设置 contentOffset
>.
我很确定他们实际上就是这样做的。如果您仔细想想,这就是 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 中,您不应该只将 tableView
的 contentOffset
设置为 CGPointMake(0., CGRectGetHeight(self.tableView.tableHeaderView.frame ))
如果您的 viewController
将 automaticallyAdjustsScrollViewInsets
设置为 YES
,因为它可能不会是 CGPointZero
在 viewWillAppear:
关于ios - 将搜索栏添加到 UITableView 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869649/