如何使用UISplitView自适应用户界面呈现UISearchController?

使用具有自适应UISplitViewController用户界面的通用故事板。

我想使用下面的代码(来自主视图控制器)在主(主)侧显示search控制器:

 static NSString * const kCGISearchViewControllerID = @"SearchViewControllerID"; - (IBAction)searchButtonClicked:(UIBarButtonItem *)__unused sender { SearchViewController *searchResultsController = [self.storyboard instantiateViewControllerWithIdentifier:kCGISearchViewControllerID]; self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController]; self.searchController.searchResultsUpdater = searchResultsController; self.searchController.hidesNavigationBarDuringPresentation = NO; [self presentViewController:self.searchController animated:YES completion:nil]; } 

它最初似乎工作正常(不pipe起始方向):

景观开始看起来不错

自动旋转后出现问题(键盘仍然可见,底层内容仍然变暗,但search栏消失):

在这里输入图像说明

在旋转回风景时,search栏会重新出现,但其宽度现在是错误的:

在这里输入图像说明

(我也尝试将search控制器的searchBar放置在searchBar中,而searchBar正确调整时,search结果控制器仍然看起来不正确。)

我错过了一个呈现的UISearchController ,当UI适应不断变化的大小类时正确地animation本身?

更新:

添加self.definesPresentationContext = YES; 获取search栏/结果出现在主视图中,但search栏该导航栏animation,并且不可见。 另一个问题是,从纵向(有状态栏)旋转回到横向时,search栏高度不会缩小。

你使用的是什么Xcode版本? 模拟器上有哪些iOS版本?
试过使用Xcode 6,iOS 8.4 – 这就是我在MasterVC中使用的所有代码:

 class MasterViewController: UITableViewController { @IBAction func search(sender: UIBarButtonItem) { let searchController = UISearchController(searchResultsController: nil) searchController.hidesNavigationBarDuringPresentation = false presentViewController(searchController, animated: true, completion: nil) } ... } 

它在主人内部呈现并locking屏幕的方向! 自发布答案以来,行为可能发生了变化。