我有一种情况,我想使用UISearchController来搜索/过滤UITableView的内容。我想要的行为与Apple在联系人应用程序中所执行的行为相同,其中搜索栏保持固定在表格视图的顶部,内容在其下滚动。当点击搜索栏时,我希望栏动画的默认行为覆盖导航栏,结果如下,再次像Apple联系人一样。
我已经制作了一个示例应用来隔离事物并将其与下面的搜索控制器初始化代码配对。此VC是具有半透明导航栏的UINavigationController的根视图控制器。
self.navigationItem.title = @"Title";
self.edgesForExtendedLayout = UIRectEdgeNone;
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchBar.frame = CGRectMake(0.0f, 0.0f, 320.0f, 44.0f);
self.searchController.hidesNavigationBarDuringPresentation = YES;
self.searchController.dimsBackgroundDuringPresentation = NO;
[self.view addSubview:self.searchController.searchBar];
self.definesPresentationContext = YES;
这导致两个问题:1)搜索栏不会将高度扩展到64px,因此您仍然可以看到状态栏后面的内容和2)每当您将项目推送到导航堆栈然后返回时,父视图(表视图)跳转。
我看到UISearchcontroller周围有很多混乱,所以我不是非常乐观地认为有人有一个很好的解决方案,但无论如何都要尝试。