搜索栏与iOS 11上的状态栏重叠

Ste*_*fan 12 cocoa-touch uisearchbar ios11

我正在使用UISearchController和UISearchResultsController来实现搜索功能.

MySearchResultsController实现UISearchResultsUpdating和UISearchBarDelegate:

override open func viewDidLoad() {
    super.viewDidLoad()
    self.edgesForExtendedLayout = [];
    self.automaticallyAdjustsScrollViewInsets = false;
}
Run Code Online (Sandbox Code Playgroud)

我在MyTableViewController中像tableHeader一样显示搜索栏:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
    self.searchController.searchResultsUpdater = self.searchResultsController;
    self.searchController.searchBar.delegate = self.searchResultsController;
    self.searchController.searchBar.scopeButtonTitles = @[NSLocalizedString(@"SEARCH_SCOPE_TEMPERATURES", nil), NSLocalizedString(@"SEARCH_SCOPE_KNOWHOW", nil)];
    self.tableView.tableHeaderView = self.searchController.searchBar;
    self.definesPresentationContext = YES;
}
Run Code Online (Sandbox Code Playgroud)

这之前完美无缺,但在iOS 11下,一旦我点击它,搜索栏就会与状态栏重叠(见截图).我尝试了很多不同的东西来让它正确显示但还没有找到解决方案.

在此输入图像描述

Ste*_*fan 3

我发现问题是呈现视图控制器也设置

\n\n
override open func viewDidLoad() {\n    super.viewDidLoad()\n    self.edgesForExtendedLayout = [];\n    self.automaticallyAdjustsScrollViewInsets = false;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我必须这样做,因为表视图实际上并没有一直延伸到顶部。

\n\n

我在演示视图控制器中解决了这个问题:

\n\n
override open func viewDidLoad() {\n    super.viewDidLoad()\n    self.automaticallyAdjustsScrollViewInsets = false;\n    if (@available(iOS 11.0, *)) {\n        //NSLog(@"iOS 11.0");\n    } else {\n        self.edgesForExtendedLayout = UIRectEdgeNone;\n        //NSLog(@"iOS < 11.0");\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

似乎是 iOS 11 的错误,或者至少是一个奇怪的行为\xe2\x80\xa6

\n