16

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

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

搜索栏不是 100% 的屏幕宽度,而是在部分索引的右侧。

我的问题是:

  • 当它是具有可见部分索引tableHeaderView的 a时,如何将搜索栏的宽度设置为 100% ?UITableView
  • 如何在 iOS 7 的联系人应用程序中创建导航栏隐藏且搜索栏的灰色背景延伸到状态栏的过渡?

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

这里有两张图片可以说明我的问题: 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

5

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

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

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

于 2014-03-27T11:24:13.443 回答
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;
}
于 2013-11-08T12:37:37.467 回答