2013-09-25 27 views
16

我有一个应用程序,我有一个UITableView与部分可以通过sectionIndexTitlesForTableView:侧滚动。创建一个搜索栏就像在iOS 7的联系人应用程序

UITableViewtableHeaderView中,我想添加一个UISearchBar,我想表现得像苹果在iOS7的新联系人应用中使用的那个。但我似乎无法让它工作。

搜索栏不是100%的屏幕宽度,而是右侧对着节索引。

我的问题是:

  • 我如何获得搜索栏的宽度为100%时,它是一个UITableView具有可见部分指标的tableHeaderView
  • 如何创建类似iOS 7的通讯录应用程序中的导航栏隐藏和搜索栏的灰色背景扩展到状态栏的转换?

我已经试过几件事情已经,包括增加在导航栏上的搜索栏,并使用UISearchBarController,但我不能就如何建立这个苹果网站上找到良好的文档。另外,从iOS6到iOS7的转换指南对我来说帮助不大。

这里有两张照片是说明我的问题: enter image description here enter image description here

回答

0

两件事情:

1)设定的tableView的sectionIndexBackgroundColor为[的UIColor clearColor。

2)实施“viewDidLayoutSubviews”的方法来解决框架的UISearchBar

的方式做苹果自己的应用,这将解决您的问题
- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    CGRect barFrame = self.searchBar.frame; 
    barFrame.size.width = self.view.bounds.size.width; 
    self.searchBar.frame = barFrame; 
} 
5

两个主要的不同。

首先,他们的UISearchBar不是tableView的headerView。这是桌子上方的独立视图。您需要将您的UITableViewController更改为一个UITableView,UITableView位于UISearchBar正下方。

其次,他们的UISearchBar有一个关联的搜索显示控制器。假设您正在使用故事板文件,则将其捆绑在一起 - 只需将UISearchBar添加到搜索显示控制器即可。这将处理状态栏下的所有转换。

+0

你的解决方案确实突出了关键点..我按照你的方式,并设法找到tableView顶部的搜索栏。我现在面临的唯一问题是......当搜索文本框处于焦点状态时,搜索栏将一直到顶部,甚至覆盖状态栏。我不知道我该如何解决这个问题? – xialin

+0

最好的解决方案。我在考虑如何对UITableViewController做同样的事情,但事实是:“构建”UITableViewController并复制样板代码比尝试重写“scrollViewDidScroll”更容易 –

相关问题