使用具有自适应 UISplitViewController
用户界面的通用 Storyboard。
我想在主(主)端呈现一个搜索 Controller ,使用以下代码(来自主视图 Controller ):
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];
}
它最初似乎工作正常(无论起始方向如何):
自动旋转后出现问题(键盘仍然可见,底层内容仍然变暗,但搜索栏已经消失):
旋转回横向后,搜索栏重新出现,但现在它的宽度是错误的:
(我也试过将搜索 Controller 的 searchBar
放在 titleView
中。虽然 searchBar 正确适应,但搜索结果 Controller 看起来仍然不正确。)
当 UI 适应不断变化的大小类别时,我缺少什么来让呈现的 UISearchController
正确地为自身设置动画?
更新:
添加 self.definesPresentationContext = YES;
使搜索栏/结果出现在主视图中,但搜索栏在导航栏下动画化,并且不是可见。另一个问题是,当搜索栏从纵向(有状态栏)旋转回横向时,它的高度不会缩小。
最佳答案
您使用的是哪个 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)
}
...
}
它在 Master 中呈现并锁定屏幕方向!自您发布答案后,行为可能已发生变化。
关于ios - 我应该如何使用 UISplitView 自适应用户界面呈现 UISearchController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27990019/