UISearchDisplayController奇怪的动画和偏移量

时间:2013-12-27 14:42:23

标签: ios ios7 uitableview uisearchdisplaycontroller

我创建了UITableViewController并以编程方式添加了UISearchDisplayController。没有故事板或nib文件,因为我正在以编程方式执行所有操作。一切似乎都很完美,除非我点击搜索栏,它会怪异地动画,并且在搜索栏的底部留下一些偏移量。

Here's a video行为。

这是表VC的代码:

// Initialize Search Bar
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.searchBar.delegate = self;
self.tableView.tableHeaderView = self.searchBar;

self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.searchController.delegate = self;

// Hide the search bar
[self.tableView setContentOffset:CGPointMake(0, 44)];

我还在UITableViewController的实现上尝试了[self setEdgesForExtendedLayout:UIRectEdgeNone];,但它创建了另一个问题,虽然它似乎在一定程度上修复了动画,但在搜索栏底部留下了一些空隙和相同的间隙。

编辑:还有一件事要注意 - 在视频中可以看到结果表视图与搜索栏正确对齐。那么主表视图的实现有什么问题吗?它们是相同的,但前者是正确对齐的,所以我猜测表视图有问题。你觉得怎么样?

1 个答案:

答案 0 :(得分:0)

iOS7以编程方式添加这些元素变得非常困难。在我自己的应用程序中进行了大量测试之后,我就在UITableViewController内部进行了测试。

// _searchBar
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.frame.size.width, 44.0f)];
self.searchBar.delegate = self;

// _searchController
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:[self searchBar] contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDelegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsTableView.frame = [self.tableView frame];

// _tableView
self.tableView.tableHeaderView = [self.searchController searchBar];

不要担心隐藏searchBar,因为操作系统会在您点击取消时将所有内容重置为原始状态。