美文网首页
iOS导航管理器

iOS导航管理器

作者: Style_Tender | 来源:发表于2019-06-05 16:57 被阅读0次

    最近在写一个iOS的项目,里面的导航栏管理,一开始使用的是WRNavigationBar(这里放上链接:WRNavigationBar)。一开始的时候用的的确很爽,很方便。但随着接入的三方也越来越多。之间的不兼容,也慢慢多了起来。

    比如用到的一个相册选择器ZLPhotoBrowser,里面的导航栏会被WRNavigationBar修改,导致按钮看不见,导航栏透明等问题,即使加入到WRNavigationBar的黑名单中,也无济于事。

    再比如,当模态一个导航控制器时,会发现不管怎么设置导航栏都是透明的。

    这个WRNavigationBar本身没有适配XR(可以通过修改WRNavigationBar的源代码来解决),在了解到作者也不再维护更新了。。。最后决定自己实现一个这样的管理器。

    国际惯例,先上地址:https://github.com/Style-Tender/TYNavigationBar

    使用方法在github上已经写得比较清楚了(一共也就那么几个方法)

    本文主要讲一下实现的步骤:

    为了不入侵代码,采用的是建一个UIViewController的Cateory。
    1.利用runtime添加了属性:

    navigationBarBackgroundColor:导航栏背景颜色
     
    statusBarStyle:状态栏Style
     
    navigationBarTintColor:导航栏的Tint颜色
     
    navigationBarTitleTextColor:导航栏标题的字体颜色
     
    navigationBarBackgroundAlpha:导航栏背景透明度
     
    navigationBarShadowImageHidden:导航栏横线的隐藏
     
    navigationBarHidden:导航栏隐藏
    

    2.在load方法中,交换了

    viewWillAppear:
    

    的实现为

    ty_viewWillAppear:
    

    再在ty_viewWillAppear:中设置了导航栏的属性,这样就能保证每次进入页面的时候都能变成当前控制器设置的样式

    3.为了设置一些全局的样式,又在TYNavigationBarManager中添加了几个类方法,用于设置全局的样式

    #pragma mark - 默认导航栏背景颜色
    + (void)ty_setDefaultNavigationBarBackgroundColor:(UIColor *)color;
     
    #pragma mark - 默认状态栏Style
    + (void)ty_setDefaultStatusBarStyle:(UIStatusBarStyle) style;
     
    #pragma mark - 默认导航栏的Tint颜色
    + (void)ty_setDefaultNavigationBarTintColor:(UIColor *)color;
     
    #pragma mark - 默认导航栏标题的字体颜色
    + (void)ty_setDefaultNavigationBarTitleTextColor:(UIColor *)color;
     
    #pragma mark - 默认导航栏背景透明度
    /**
     默认导航栏背景透明度
     */
    + (void)ty_setDefaultNavigationBarBackgroundAlpha:(CGFloat)alpha;
     
    #pragma mark - 默认导航栏横线的隐藏
    /**
     默认导航栏横线的隐藏
     */
    + (void)ty_setDefaultNavigationBarShadowImageHidden:(BOOL)hidden;
    

    实现也都是比较简单的,没有什么复杂,高深的东西,只是为了给有需要,又不想自己写的同学直接用一下。觉得有点作用的,还请点个Star。万分感谢

    谢谢看完。

    相关文章

      网友评论

          本文标题:iOS导航管理器

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