iphone x:将搜索栏保持在安全区内
问题描述:
升级我们的应用程序以支持iPhone X.如何将搜索栏添加到表视图的标题并将其放在安全区内?这是我们目前如何建立搜索栏。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
}
答
不清楚“安全区内”的含义。表格视图可以滚动,所以搜索栏不一定在屏幕的任何部分“内”它可以在传感器区域后面滚动并超出。
但是,您会注意到,本机应用程序不会将搜索栏作为表格的标题。他们把它放在导航栏中。你应该这样做。通过设置navigationItem
的searchController
将搜索栏放入导航栏中。
答
此主题在Building Apps for iPhone X视频中明确讨论。 (Designing for iPhone X也良好的视频)
底线,苹果建议使用导航控制器和显示它有:
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的搜索控制器,而不是将其设置为表头,可以防止它从安全区滚出。)