Ios 搜索控制器中的搜索栏重叠状态栏

Ios 搜索控制器中的搜索栏重叠状态栏,ios,objective-c,uisearchcontroller,Ios,Objective C,Uisearchcontroller,我在UITableViewController中以编程方式创建了一个uisearch控制器。它工作正常,但搜索栏与状态栏显示不正确。这是我的代码和一些截图。当取消搜索时,它还会制作一个有趣的动画 - (void)viewDidLoad { [super viewDidLoad]; _resultsTableViewController = [ResultsTableViewController new]; _searchController = [[UISearchCo

我在
UITableViewController
中以编程方式创建了一个
uisearch控制器。它工作正常,但搜索栏与状态栏显示不正确。这是我的代码和一些截图。当取消搜索时,它还会制作一个有趣的动画

- (void)viewDidLoad
{
    [super viewDidLoad];

    _resultsTableViewController = [ResultsTableViewController new];
    _searchController = [[UISearchController alloc] initWithSearchResultsController:_resultsTableViewController];
    _searchController.searchResultsUpdater = _resultsTableViewController;
    _searchController.dimsBackgroundDuringPresentation = NO;
    self.definesPresentationContext = YES;
    self.tableView.tableHeaderView = _searchController.searchBar;       
}

状态栏应该有更多的填充。

当我取消搜索时,我在这里得到一个糟糕的动画,这是状态栏的高度。

从您的屏幕截图可以看出,您正在使用iOS 11,使用此版本时,
UISearchController
搜索栏添加到UI的方式发生了变化。iOS 11上的导航项负责显示搜索,因此UIKit尚未更新,无法正确处理表头视图中显示的搜索栏

在iOS上≤你应该继续使用

self.tableView.tableHeaderView = _searchController.searchBar;
但是换成

self.navigationItem.searchController = _searchController;
self.navigationItem.hidesSearchBarWhenScrolling = YES;

在iOS 11及更高版本上。

从您的屏幕截图可以看出您正在使用iOS 11,使用此版本时,
UISearchController
搜索栏添加到UI的方式发生了变化。iOS 11上的导航项负责显示搜索,因此UIKit尚未更新,无法正确处理表头视图中显示的搜索栏

在iOS上≤你应该继续使用

self.tableView.tableHeaderView = _searchController.searchBar;
但是换成

self.navigationItem.searchController = _searchController;
self.navigationItem.hidesSearchBarWhenScrolling = YES;

在iOS 11及更高版本上。

只是一个简短的附加警告,即搜索栏可能仍会在
这只是一个简短的附加警告,除非您指定不想让搜索栏隐藏导航栏,否则搜索栏可能仍会在
WWDC的这段视频讲述了如何在iOS 11中容纳搜索栏。也许你会发现它很有用!WWDC的这段视频讲述了如何在iOS 11中容纳搜索栏。也许你会发现它很有用!我的代码与问题相同,并且只在iOS11.2.5和iphone6s中面临相同的问题。与所有其他设备一起工作正常。当我点击搜索,键入一些东西,然后点击搜索结果->重定向到下一个屏幕并返回到第一个屏幕中的一个项目时,我发现了这个问题。你知道需要做什么吗?最好在一个单独的问题中提出这个问题,提供出现问题的所有细节和你的代码。我的代码与问题相同,只有在iOS11.2.5和iPhone 6s中才面临相同的问题。与所有其他设备一起工作正常。当我点击搜索,键入一些东西,然后点击搜索结果->重定向到下一个屏幕并返回到第一个屏幕中的一个项目时,我发现了这个问题。你知道需要做什么吗?最好在一个单独的问题中提出这个问题,提供出问题的所有细节以及你的代码。