iOS 8上UISearchBar顶部的节头。适用于iOS 9

时间:2015-08-10 13:52:18

标签: ios8 xcode7 ios9 uisearchcontroller

使用UISearchController将过滤添加到UITableView。使用Xcode 7,部分标题与iOS 8上的搜索栏重叠。这在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()
}

UITableView with sections and index on iOS 8 Simulator

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:-1)

将更改改为:

    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,而不是视图控制器。