我有一个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中,如果contentOffsettableView设置为CGPointMake(0., CGRectGetHeight(self.tableView.tableHeaderView.frame)),则不应仅将viewControllerautomaticallyAdjustsScrollViewInsets设置为YES,因为在CGPointZero中可能不会将viewWillAppear:设置为ojit_code。

关于ios - 在UITableView的顶部添加搜索栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22869649/

10-12 04:01
查看更多