在iOS 7联系人应用中创建一个搜索栏

时间:2013-09-25 09:50:13

标签: ios objective-c uitableview

我有一个应用程序,其中UITableView的部分可以通过sectionIndexTitlesForTableView:在侧面滚动。

tableHeaderView的{​​{1}}中,我想添加一个UITableView,我想表现得像苹果公司在iOS7的新联系人应用中使用的那样。但我似乎无法让它发挥作用。

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

我的问题是:

  • 如果UISearchBar的{​​{1}}具有可见的部分索引,我如何将搜索栏的宽度设置为100%?
  • 如何在iOS 7的“联系人”应用中创建转换,其中导航栏隐藏且搜索栏的灰色背景延伸到状态栏?

我已经尝试了几件事,包括在导航栏中添加搜索栏,并使用tableHeaderView,但我无法在Apple网站上找到有关如何创建此文档的详细文档。此外,从iOS6到iOS7的过渡指南对我来说没有什么帮助。

以下两张图片说明了我的问题: enter image description here enter image description here

2 个答案:

答案 0 :(得分:5)

Apple与他们的应用程序的方式有两个主要区别,这将解决您的问题。

首先,他们的UISearchBar不是tableView的headerView。它是表格上方的一个单独视图。您需要将UITableViewController更改为UITiewController,其UITableView位于UISearchBar下方。

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

答案 1 :(得分: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;
}