【发布时间】:2015-01-16 18:01:45
【问题描述】:
使用具有自适应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; 会使搜索栏/结果出现在主视图中,但搜索栏在在该导航栏下方进行动画处理,并且不可见。另一个问题是搜索栏的高度没有缩小,当它从纵向(有一个状态栏)旋转回到横向时。
【问题讨论】:
-
添加
self.definesPresentationContext = YES;让我更进一步
标签: ios ios8 uisplitviewcontroller uisearchcontroller adaptive-ui