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

jvd*_*ten 16 objective-c uitableview ios

我有一个应用程序,我有一个UITableView可以在侧面滚动的部分sectionIndexTitlesForTableView:.

tableHeaderViewUITableView我想补充一个UISearchBar,我要像一个苹果在iOS7他们新的联系人应用程序中使用的行为.但我似乎无法让它发挥作用.

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

我的问题是:

  • 如何获取搜索栏的宽度为100%时,它是tableHeaderView一个UITableView具有可见部分指标?
  • 如何在iOS 7的"联系人"应用程序中创建转换,导航栏隐藏,搜索栏的灰色背景延伸到状态栏?

我已经尝试了几件事,包括在导航栏中添加搜索栏,然后使用UISearchBarController,但我在Apple网站上找不到关于如何创建这个的好文档.此外,从iOS6到iOS7的过渡指南对我来说也没有什么帮助.

这是两张图片,说明了我的问题: 在此输入图像描述 在此输入图像描述

Jor*_*ith 5

苹果公司应用程序的方式有两个主要区别,这将解决您的问题.

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

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


小智 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;
}
Run Code Online (Sandbox Code Playgroud)