美文网首页
iOS11 UISearchController的使用

iOS11 UISearchController的使用

作者: 远辰jt | 来源:发表于2017-11-26 16:33 被阅读182次

    1. UISearchController

    UISearchController虽然叫做Controller,但是和普通的控制器有区别,它提供了一个默认样式的UISearchBar和激活,关闭搜索控制器的动画效果。iOS系统应用-设置-中的搜索功能就是用的UISearchController,如果需求的效果和系统设置中的效果一样可以使用UISearchController,当前也可以自己实现,自己实现动画。

    2. API

    // 初始化方法需要传入一个searchResultsController,这个控制器可以是当前控制器,也可以是一个新的控制器,注意想让当前控制器作为搜索结果控制器传入nil即可,不要传入self会引起崩溃
    - (instancetype)initWithSearchResultsController:(nullable UIViewController *)searchResultsController;
    
    // 当searchBar文字改变的时候会通知的代理对象,注意这个对象要和上面传入的对象一致,不然崩溃
    @property (nullable, nonatomic, weak) id <UISearchResultsUpdating> searchResultsUpdater;
    
    // 如果设置为YES,会以默认方式展示搜索控制器
    @property (nonatomic, assign, getter = isActive) BOOL active;
    
    @property (nullable, nonatomic, weak) id <UISearchControllerDelegate> delegate;
    // 默认值YES,和obscuresBackgroundDuringPresentation属性的效果一样,控制器searchController展示的时候是否有黑色的背景.
    @property (nonatomic, assign) BOOL dimsBackgroundDuringPresentation; 
    @property (nonatomic, assign) BOOL obscuresBackgroundDuringPresentation;
      
    // 是否隐藏导航栏 默认YES
    @property (nonatomic, assign) BOOL hidesNavigationBarDuringPresentation;   
    @property (nullable, nonatomic, strong, readonly) UIViewController *searchResultsController;
    
    // 可以拿到searchBar自定义显示效果
    @property (nonatomic, strong, readonly) UISearchBar *searchBar;
    

    3. 经典用法

    iOS11之前的经典用法是创建searchController然后把searchBar设置给tableView的headerView,效果如下 searchBar作为headerView.png

    3. iOS11新用法

    iOS11给navigationItem添加了一个UISearchController类型的属性,也就是可以给一个控制器的navigationItem设置一个搜索控制器,效果的话就是到导航栏中显示一个searchBar,遇到滚动页面的话可以设置在滚动的时候隐藏和显示searchBar,系统中的设置界面就是这样的效果。

    // 通过设置该属性可以让其包含的控制器的导航栏中显示搜索栏
    @property (nonatomic, retain, nullable) UISearchController *searchController
    
    // 同样是iOS11新增的属性,这个属性是在上一个属性设置的前提下控制滚动的时候searchBar的显示效果,就是当控制器中有滚动视图滚动的时候,searchBar是隐藏还是一直显示固定在导航栏的下边,默认值是YES
    @property (nonatomic) BOOL hidesSearchBarWhenScrollings
    

    iOS11下系统设置界面的效果


    设置.png iOS11下新用法.png

    4. 代码

    起始UISearchController只是提供了一个默认样式的UISearchbar和展示和隐藏的动画,具体搜索什么内容,怎么搜索,搜索结果的展示都需要自己去实现demo

    相关文章

      网友评论

          本文标题:iOS11 UISearchController的使用

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