• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

GKNavigationBar: GKNavigationBarViewController的分类实现方式,耦合度底,使用更加 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

GKNavigationBar

开源软件地址:

https://gitee.com/QuintGao/GKNavigationBar

开源软件介绍:

GKNavigationBar

GKNavigationBarViewController的分类实现方式,耦合度底,使用更加便捷

Build StatusLicense MITplatformlanguagescocoapodsCarthage compatiblesupport

Swift版本请看这里 → GKNavigationBarSwift

介绍:(本框架的特性)

  • 无侵入性,低耦合性
  • 支持自定义导航栏样式(隐藏、透明等)
  • 支持控制器开关返回手势
  • 支持控制器开关全屏返回手势
  • 支持控制器设置导航栏透明度,可实现渐变效果
  • 完美解决UITableView,UIScrollView滑动手势冲突
  • 可实现push,pop时控制器缩放效果(如:今日头条)
  • 可实现左滑push一个控制器的效果(如:网易新闻)

重要!!!

感谢使用该库,如果在使用过程中遇到问题可查看issue或提交issue,或者进QQ群1047100313

1、手势不生效?

1、查看是否使用了+ (instancetype)rootVC:(UIViewController *)rootVC 方法初始化导航控制器
2、查看是否在控制器中禁用了手势返回self.gk_interactivePopDisabled = YES,self.gk_fullScreenPopDisabled = YES

2、导航栏不显示?

查看是否调用了跟导航栏相关的方法,如self.gk_navTitle = @"GKNavigationBar"
注意:只有调用跟导航栏相关的方法才会初始化导航栏!

3、切换控制器的时候出现状态栏显示异常(一半黑一半白等)

解决办法:在控制器初始化方法里面设置状态栏样式

- (instancetype)init {    if (self = [super init]) {        self.gk_statusBarStyle = UIStatusBarStyleLightContent;    }    return self;}

4、Xcode 11.4 在调试的时候会出现状态栏样式改变不了的情况

解决办法:在基类控制器里实现下面两个方法

- (BOOL)prefersStatusBarHidden {    return self.gk_statusBarHidden;}- (UIStatusBarStyle)preferredStatusBarStyle {    return self.gk_statusBarStyle;}

使用说明

使用方式

1、手动导入

直接拖入GKNavigationBar文件夹到项目,#import "GKNavigationBar.h",开始使用

2、pod方式

Podfile中添加 pod 'GKNavigationBar',执行pod install 或pod update 安装,#import <GKNavigationBar/GKNavigationBar.h>,开始使用

模块说明:
  • 如果你只需要导航栏模块,可使用pod 'GKNavigationBar/NavigationBar'
  • 如果你只需要手势处理模块,可使用pod 'GKNavigationBar/GestureHandle'

3、Carthage方式

Cartfile中添加 github "QuintGao/GKNavigationBar",执行carthage update --platform iOS,#import <GKNavigationBar/GKNavigationBar.h>,开始使用

4、SPM方式

在Xcode中点击File->Swift Packages->Add Package Dependency,然后输入https://github.com/QuintGao/GKNavigationBar下载相应版本的代码,开始使用

使用方法

1、在AppDelegate中添加导航配置

[GKConfigure setupDefaultConfigure]

2、创建根导航控制器

UINavigationController *nav = [UINavigationController rootVC:[GKMainViewController new]];

3、设置导航栏属性(调用即创建)

self.gk_navBackgroundColor = [UIColor red]

部分功能说明

1、返回拦截包括点击返回和手势返回

// 重写下面的方法,拦截返回手势#pragma mark - GKGesturePopHandlerProtocol- (BOOL)navigationShouldPop {    // do something        return NO;}

也可以单独处理点击返回和手势返回

// 重写下面的方法,拦截点击返回- (BOOL)navigationShouldPopOnClick {    // do something        return NO;}
// 重写下面的方法,拦截手势返回- (BOOL)navigationShouldPopOnGesture {    // do something        return NO;}

2、与系统导航平滑过渡

1、开启系统导航过渡处理 nav.gk_openSystemNavHandle = YES;2、在控制器中设置gk_popDelegate并实现下面的方法#pragma mark - GKViewControllerPopDelegate- (void)viewControllerPopScrollBegan {    }- (void)viewControllerPopScrollUpdate:(float)progress {    // 由于已经出栈,所以self.navigationController为nil,不能直接获取导航控制器    UIViewController *vc = [GKConfigure visibleViewController];    vc.navigationController.navigationBar.alpha = 1 - progress;}- (void)viewControllerPopScrollEnded:(BOOL)finished {    // 由于已经出栈,所以self.navigationController为nil,不能直接获取导航控制器    UIViewController *vc = [GKConfigure visibleViewController];    vc.navigationController.navigationBar.alpha = 1;    vc.navigationController.navigationBarHidden = finished;}

3、屏蔽某些类的导航栏间距调整处理及手势处理

// 屏蔽导航栏间距处理configure.shiledItemSpaceVCs = @[NSClassFromString(@"TZPhotoPickerController"), @"TZAlbumPickerController", @"TZ"];
// 屏蔽手势处理configure.shiledGuestureVCs = @[NSClassFromString(@"TZPhotoPickerController"), @"TZAlbumPickerController", @"TZ"];

更多属性及方法可在demo中查看

版本记录

  • 1.4.3 - 2021.02.23 导航栏高度适配优化,导航栏间距调整优化,控制器增加禁止导航栏间距调整属性#62 #67
  • 1.4.2 - 2021.02.20 返回拦截优化,增加同时处理点击返回和手势返回的方法
  • 1.4.1 - 2021.02.07 暗黑模式适配优化,导航栏背景色和分割线颜色支持设置动态颜色
  • 1.4.0 - 2020.12.25 修复边缘滑动返回失效的bug #60
  • 1.3.9 - 2020.12.24 手势处理优化,解决可能出现的卡死问题,push、pop手势灵敏度优化
  • 1.3.7 - 2020.12.05 手势处理优化,增加禁用系统手势处理属性
  • 1.3.6 - 2020.12.02 修复iPhone 12,iPhone 12 Pro机型导航栏间距调整不准确的bug
  • 1.3.4 - 2020.12.01 修复可能出现的卡死情况#53
  • 1.3.3 - 2020.11.29 手势滑动优化,支持与系统导航平滑衔接、控制器屏蔽支持部分匹配
  • 1.3.0 - 2020.10.29 功能模块拆分,可按需pod不同模块
  • 1.2.0 - 2020.10.26 优化代码宏定义,增加自定义转场demo
  • 1.1.8 - 2020.10.22 适配iPhone 12 系列手机,增加自定义转场动画属性
  • 1.1.6 - 2020.09.09 修复左滑push卡住不动的bug
  • 1.1.5 - 2020.08.14 修复屏蔽控制器无效的bug
  • 1.1.3 - 2020.07.28 修复导航栏标题或颜色不生效的bug
  • 1.1.2 - 2020.07.27 修复方法交换可能带来的crash问题
  • 1.1.1 - 2020.07.23 修复手势处理对根控制器的影响
  • 1.1.0 - 2020.07.22 修复手势处理存在的问题,增加属性可屏蔽某些控制器对手势处理的影响
  • 1.0.9 - 2020.07.16 增加gk_backImage,可自定义返回按钮图片
  • 1.0.8 - 2020.07.06 增加某些控制器对导航栏间距调整的影响
  • 1.0.7 - 2020.06.22 设置导航栏间距不再局限于GKNavigationBar
  • 1.0.6 - 2020.06.18 修复设置导航栏间距失效的bug
  • 1.0.0 - 2020.01.14 修复设置某个导航栏间距后其他导航栏间距不准确问题
  • 0.0.5 - 2020.01.02 修复某些情况下状态栏显示异常问题
  • 0.0.4 - 2019.12.22 优化状态栏切换功能
  • 0.0.3 - 2019.11.12 修复设置导航栏左右间距无效的问题
  • 0.0.2 - 2019.11.04 优化代码,解决只调用gk_navigationItem时导航栏不出现的bug
  • 0.0.1 - 2019.11.03 对GKNavigationBarViewController做了修改,使用更方便

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap