开头语:
在iOS 11中,导航栏新加入了largeTitles和searchController两个新特性,iOS 11 的大多数系统 app 都采用了新的设计,我整理了一下需要注意的几个问题。更多iOS11的新特性可以查看开发者所需要知道的 iOS 11 SDK 新特性
2017.10.19 修改:
增加评论中提到的大部分功能,具体请看:Demo
这是邮件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