使用具有自适应UISplitViewController用户界面的通用故事板.
我想使用以下代码(来自主视图控制器)在主(主)端提供搜索控制器:
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]; }
它最初似乎正常工作(无论起始方向):
自动旋转后出现问题(键盘仍然可见,底层内容仍然变暗,但搜索栏已消失):
(我也尝试将搜索控制器的searchBar放在titleView中.当searchBar正确适应时,搜索结果控制器看起来仍然不正确.)
当UI适应不断变化的大小类时,我缺少什么才能让呈现的UISearchController正确地动画化自己?
更新:
添加self.definesPresentationContext = YES;获取搜索栏/结果以显示在主视图中,但搜索栏在该导航栏下显示动画,并且不可见.另一个问题是,当它从纵向(具有状态栏)旋转回到横向时,搜索栏高度不会缩小.
解决方法
您使用的Xcode版本是什么?什么iOS版本在模拟器上?
尝试使用Xcode 6,iOS 8.4 – 这就是我在MasterVC中使用的所有代码:
尝试使用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) } ... }
它在Master中呈现并锁定屏幕的方向!自您发布答案后,行为可能已发生变化.