2017-09-15 35 views
0

升级我们的应用程序以支持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 
} 

回答

1

不清楚“安全区内”的含义。表格视图可以滚动,所以搜索栏不一定在屏幕的任何部分“内”它可以在传感器区域后面滚动并超出。

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

1

此主题在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的搜索控制器,而不是将其设置为表头,可以防止它从安全区滚出。)