開頭語:
在iOS 11中,導航欄新加入了largeTitles和searchController兩個新特性,iOS 11 的大多數系統 app 都采用了新的設計,我整理了一下需要注意的幾個問題。更多iOS11的新特性可以查看開發者所需要知道的 iOS 11 SDK 新特性
2017.10.19 修改:
增加評論中提到的大部分功能,具體請看:Demo
IMG_3237.PNG
這是郵件app中對這兩個新特性的使用,導航欄的searchBar是新的api直接在導航欄設置的,非常方便。
1.設置導航欄標題 largeTitles
api非常簡單,
self.navigationController?.navigationBar.prefersLargeTitles = true
一行代碼即可
還有一個設置顯示時機的api:
navigationItem.largeTitleDisplayMode
2.設置導航欄搜索控制器 searchController
實現需要首先創建一個UISearchController,之后設置為navigationItem.searchController即可
具體實現如下:
let mySearchController: UISearchController = UISearchController(searchResultsController: nil)
mySearchController.searchResultsUpdater = self
self.navigationItem.searchController = mySearchController
這里可以將searchResultsController設置為其他的控制器,不過需要注意的是這里需要將當前控制器的definesPresentationContext
屬性設為true,否則在modal出searchResultsController時當搜索后整個導航欄會消失,即:
self.definesPresentationContext = true
如果不希望在搜索時隱藏導航欄的話可以進行如下設置:
mySearchController.hidesNavigationBarDuringPresentation = false
以上就是我對iOS11 導航欄新設計的研究,如有問題,請留言告訴我。
Demo請點擊:Demo