Ios UISearchBar的自定义位置

Ios UISearchBar的自定义位置,ios,swift,uisearchbar,uisearchcontroller,Ios,Swift,Uisearchbar,Uisearchcontroller,我目前正在尝试实现UISearchController及其关联的UISearchBar。 我的目标是在我的UITableView上方有一个UISearchBar,它一有焦点就会显示在顶部,如下图所示(使用UISearchDisplayController的旧UI截图,现已弃用): 我已经尝试将我的UISearchBar设置为UITableView的标题,效果很好,但我有两个问题: 搜索栏在逻辑上与表视图内容一起滚动 当搜索栏获得焦点时,它将保持在相同的位置 以下是我配置UISearchBar的

我目前正在尝试实现UISearchController及其关联的UISearchBar。 我的目标是在我的UITableView上方有一个UISearchBar,它一有焦点就会显示在顶部,如下图所示(使用UISearchDisplayController的旧UI截图,现已弃用):

我已经尝试将我的UISearchBar设置为UITableView的标题,效果很好,但我有两个问题:

  • 搜索栏在逻辑上与表视图内容一起滚动
  • 当搜索栏获得焦点时,它将保持在相同的位置
  • 以下是我配置UISearchBar的方式:

    func configureSearchController() { // Method called in the viewDidLoad()
        searchController = UISearchController(searchResultsController: nil)
        searchController!.searchResultsUpdater = self
        searchController!.dimsBackgroundDuringPresentation = false
        searchController!.searchBar.placeholder = "searchfood.searchbar.placeholder".localized
        searchController!.searchBar.sizeToFit()
        searchController!.hidesNavigationBarDuringPresentation = false
        print(searchController!.searchBar.frame)
    
        // Place the search bar view to the tableview headerview.
        foodsTableView.tableHeaderView = searchController!.searchBar
    
        // Search bar
        searchController!.searchBar.searchBarStyle = .prominent
        searchController!.searchBar.barTintColor = ColorLSDP.corail
        searchController!.searchBar.tintColor = ColorLSDP.beige
    }
    
    因此,我尝试删除以下行:

    foodsTableView.tableHeaderView = searchController!.searchBar
    
    但是当我这样做的时候,我再也看不到UISearchBar了。 在检查了其他一些SO主题之后,我刚刚发现我的UISearchBar可能隐藏在我的UINavigationBar下面。因此,我尝试在viewDidLoad()方法中添加以下行:

    它没有改变什么。 无论如何,它并没有解决我的主要问题,那就是这个搜索栏最初的位置和上面的截图一样

    有没有办法用全新的UISearchController正确地执行此操作

    非常感谢您即将给出的答案, 当做
    Seb R.

    还有一个问题可以帮助我有更多的时间找到答案:下面的警告让我尝试使用UISearchController:“'searchDisplayController'已弃用:在iOS 8.0中首次弃用”。如果我在应用程序中保留UISearchDisplayController实例,这是否意味着苹果将拒绝我的新版本?另一个问题可能会帮助我有更多时间找到答案:以下警告让我尝试UISearchController:“'searchDisplayController'已弃用:在iOS 8.0中首次弃用”。这是否意味着如果我在应用程序中保留UISearchDisplayController实例,苹果会拒绝我的新版本?
    self.navigationController?.navigationBar.isTranslucent = false
    self.edgesForExtendedLayout = []