iOS开发心得ios新版本特性与适配iOS 程序员

iOS11 NavigationBar 新特性

2017-06-22  本文已影响13436人  郭宝权

开头语:

在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

上一篇 下一篇

猜你喜欢

热点阅读