2017-09-15 44 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的搜索控制器,而不是將其設置爲表頭,可以防止它從安全區滾出。)