iOS11 NavigationBar 新特性

作者: 郭宝权 | 来源:发表于2017-06-22 22:59 被阅读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

相关文章

  • iOS11 NavigationBar 新特性

    开头语: 在iOS 11中,导航栏新加入了largeTitles和searchController两个新特性,iO...

  • iOS 11新特性 - LargeTitle

    更新了iOS11之后,系统APP大量使用了新的UI风格,那就是iOS11的新特性-Large Title和新的Se...

  • iOS11 改变navigationBar的高度

    iOS11开始,navigationBar变了。iOS11之前,我们可以自定义任意大小的titleView,此时t...

  • iOS11 适配

    一、NavigationBar UIBarItem UIBarItem在iOS11在中新增landscapeIma...

  • iOS11新特性

    2018-6-26来源:http://iphone.tgbus.com/tutorial/use/201706/2...

  • iOS11新特性

    [TOC] iOS11 大标题 iOS11 导航栏搜索框 iOS11 Safe Area Insets UITab...

  • iOS11新特性

    前言 虽然 WWDC 是一个开发者会议,但是 Keynote 并不是专门针对我们开发者的,它还承担了公司状况说明,...

  • IOS11新特性

    新增框架 Core ML:负责简化和集成机器学习的框架 ARKit:用来创建增强现实 (AR) 应用 Vision...

  • ios11中 navigationbar + uisearchc

    我的情况是希望使用iOS11的新特性largetitle,所以我在appdelegate中设置了全局开启此特性,代...

  • iOS 11 导航栏问题

    前言 iOS11导航栏除了新加入了largeTitles和searchController两个新特性,可能是加入l...

网友评论

  • MM1548:请问大标题右边的大按钮怎么实现,就是rightBarButtonItem
    吾名唐宋:正常实现, 还是创建UIBarButtonItem, 然后设置self.navigationItem.rightBarButtonItem
  • 奇异果好补:hello,请问有没有遇到ios11整个导航栏上移的情况,这种情况请问怎么处理适配
    郭宝权:@奇异果好补 是不是布局问题
    奇异果好补:@郭宝权 有的 我现在就遇到了 要改。看了一波资料,看出来了titieView被撑开了,可能这点有些关系。周六还在加班搞这些真心醉了,iOS 11适配看来有很长的路要走,而项目中刚刚好我要改体验性问题,还请大大多多指教
    郭宝权:@奇异果好补 没有,还有这种操作?
  • 蓝兮_b794:我的是oc写的 调用的系统的通讯录 点击搜索搜索结果上移 少了一个导航的高度 应该怎么做适配啊
  • Sunshine_Boys:2.设置导航栏搜索控制器 searchController 。 具体实现 写的还是错的,应该是self.navigationItem.searchController = mySearchController
    郭宝权:你说得对,我试了下确实是这样,应该是后来改了api,谢谢你
    郭宝权:我之前试过这个不行,我再试试
  • LJX_________:楼主楼主。我特别想知道。ios11,电话->通讯录,那个新NavigationBar,下啦刷新,,刷新控件是在bar上的。这个怎么实现呢,,是用的UIRefershContol?
    郭宝权:那个就是tableView.refreshControl,demo已更新此设置
  • 小桥流水青山碧海:largeTitleTextAttributes 大标题颜色怎么改
    小桥流水青山碧海:@郭宝权 谢谢 if (@available(iOS 11.0, *)) {
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    self.navigationController.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
    NSDictionary *attrDict1 = @{ NSForegroundColorAttributeName: [UIColor whiteColor] };
    [self.navigationController.navigationBar setLargeTitleTextAttributes:attrDict1];
    } else {
    // Fallback on earlier versions
    }
    郭宝权:demo已更新相关
    郭宝权: self.navigationController?.navigationBar.largeTitleTextAttributes = [.foregroundColor:#colorLiteral(red: 0.1764705926, green: 0.4980392158, blue: 0.7568627596, alpha: 1)]
  • 刘奶奶去买榴莲和牛奶:楼主你好,有个问题请教下,怎么可以让SearchBar默认是显示的,而且滚动时可以隐藏?
    刘奶奶去买榴莲和牛奶:@郭宝权 谢赐教
    郭宝权:demo已更新这个设置,设置默认显示,滚动时再设置隐藏即可
  • 进阶的蚊子:楼主 ,我把你上面的代码放进一个TableViewController 的时候,并没有出现searchController,是什么原因,放到ViewControlller的时候会有效果
    郭宝权:api更新了,详情看8楼
  • 863c73f31933:楼上,UINavigationBar.appearance().titleTextAttributes,在ios11上是需要做适配嘛?
  • Sattelizer:请问一下,我之前添加了一个layer用于实现背景色渐变的效果,在iOS11下所有的items都显示不出来,但是返回按钮所在地方仍然可以点击返回,该如何做适配呢?

本文标题:iOS11 NavigationBar 新特性

本文链接:https://www.haomeiwen.com/subject/wppxqxtx.html