0

升级我们的应用程序以支持 iPhone X。如何在表格视图的标题中添加搜索栏并将其置于安全区域内?这是我们目前构建搜索栏的方式。

let searchController = UISearchController(searchResultsController: nil)
func buildSearchBar() {
    self.searchController.searchResultsUpdater = self
    self.searchController.hidesNavigationBarDuringPresentation = false
    self.searchController.dimsBackgroundDuringPresentation = false
    self.searchController.searchBar.sizeToFit()
    self.tableView.tableHeaderView = searchController.searchBar

    self.definesPresentationContext = true
}
4

2 回答 2

2

为 iPhone X 构建应用程序视频中明确讨论了该主题。(为 iPhone X 设计也是一个不错的视频。)

最重要的是,Apple 建议使用导航控制器并在此处显示:

let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false

if #available(iOS 11, *) {
    navigationItem.searchController = searchController
    searchController.isActive = true
} else {
    present(searchController, animated: true)
}

(顺便说一句,即使没有导航控制器,present-ing 搜索控制器,而不是将其设置为表头,可以防止它滚动出安全区域。)

于 2017-09-15T20:54:31.050 回答
1

不清楚您所说的“在安全区内”是什么意思。表格视图可以滚动,因此搜索栏不一定在屏幕的任何部分“内”;它可以向上滚动到传感器区域的后面和更远的地方。

但是,您会注意到,本机应用程序不会将搜索栏作为表格的标题。他们把它放在导航栏中。你也应该这样做。searchController通过设置的将搜索栏放入导航栏navigationItem

于 2017-09-15T20:05:16.023 回答