Ios8 iOS 8上UISearchBar顶部的节标题。在iOS 9上工作

Ios8 iOS 8上UISearchBar顶部的节标题。在iOS 9上工作,ios8,xcode7,ios9,uisearchcontroller,Ios8,Xcode7,Ios9,Uisearchcontroller,使用UISearchController向UITableView添加筛选。在iOS 8上,节标题与使用Xcode 7的搜索栏重叠。这在iOS 9中看起来不错。为了使iOS 8看起来像iOS 9版本,我可以采取哪些变通方法 override func viewDidLoad() { super.viewDidLoad() self.searchController.searchResultsUpdater = self self.searchController.hides

使用UISearchController向UITableView添加筛选。在iOS 8上,节标题与使用Xcode 7的搜索栏重叠。这在iOS 9中看起来不错。为了使iOS 8看起来像iOS 9版本,我可以采取哪些变通方法

override func viewDidLoad() {
    super.viewDidLoad()
    self.searchController.searchResultsUpdater = self
    self.searchController.hidesNavigationBarDuringPresentation = false
    self.searchController.dimsBackgroundDuringPresentation = false
    self.tableView.tableHeaderView = searchController.searchBar
    self.definesPresentationContext = true
    self.searchController.searchBar.sizeToFit()

    tableView.sectionIndexBackgroundColor = UIColor.clearColor()
}
将更改为:

    self.searchController.searchResultsUpdater = self
    self.searchController.hidesNavigationBarDuringPresentation = false
    self.searchController.dimsBackgroundDuringPresentation = false
    self.searchController.definesPresentationContext = true
    self.searchController.searchBar.sizeToFit()
    self.navigationItem.titleView = self.searchController.searchBar;
    tableView.sectionIndexBackgroundColor = UIColor.clearColor()
因此,在searchController而不是视图控制器上设置DefinePresentationContext

self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 44)];
[self.tableView.tableHeaderView addSubview:self.searchController.searchBar];

创建一个新的UIView并将搜索栏添加为子视图,然后将tableView的标题视图设置为新创建的视图将解决此问题。

我目前也遇到了同样的问题-您是否找到了修复方法?@Harry我很幸运地调用了
sizeToFit()
在将搜索栏设置为
tableHeaderView之前,在
搜索栏上
将搜索栏设置为标题视图而不是tableHeaderView如何解决此问题?这并不能真正解决问题。。。