GKNavigationBarViewController的分类实现方式,耦合度底,使用更加便捷
GKNavigationBarViewController的分类实现方式,耦合度底,使用更加便捷
Swift版本请看这里 → GKNavigationBarSwift
感谢使用该库,如果在使用过程中遇到问题可查看issue或提交issue,或者进QQ群1047100313
1、查看是否使用了+ (instancetype)rootVC:(UIViewController *)rootVC 方法初始化导航控制器
2、查看是否在控制器中禁用了手势返回self.gkinteractivePopDisabled = YES,self.gkfullScreenPopDisabled = YES
查看是否调用了跟导航栏相关的方法,如self.gk_navTitle = @"GKNavigationBar"
注意:只有调用跟导航栏相关的方法才会初始化导航栏!
解决办法:在控制器初始化方法里面设置状态栏样式
- (instancetype)init { if (self = [super init]) { self.gk_statusBarStyle = UIStatusBarStyleLightContent; } return self; }
解决办法:在基类控制器里实现下面两个方法 ``` - (BOOL)prefersStatusBarHidden { return self.gk_statusBarHidden; }
直接拖入GKNavigationBar文件夹到项目,#import "GKNavigationBar.h",开始使用
Podfile中添加 pod 'GKNavigationBar',执行pod install 或pod update 安装,
Cartfile中添加 github "QuintGao/GKNavigationBar",执行carthage update --platform iOS,
在Xcode中点击File->Swift Packages->Add Package Dependency,然后输入https://github.com/QuintGao/GKNavigationBar 下载相应版本的代码,开始使用
[GKConfigure setupDefaultConfigure]
UINavigationController *nav = [UINavigationController rootVC:[GKMainViewController new]];
self.gk_navBackgroundColor = [UIColor red]
// 重写下面的方法,拦截返回手势 #pragma mark - GKGesturePopHandlerProtocol - (BOOL)navigationShouldPop { // do somethingreturn NO;
}
也可以单独处理点击返回和手势返回 ``` // 重写下面的方法,拦截点击返回 - (BOOL)navigationShouldPopOnClick { // do something
return NO;
}
// 重写下面的方法,拦截手势返回 - (BOOL)navigationShouldPopOnGesture { // do somethingreturn NO;
} ```
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; }
// 屏蔽导航栏间距处理 configure.shiledItemSpaceVCs = @[NSClassFromString(@"TZPhotoPickerController"), @"TZAlbumPickerController", @"TZ"];
// 屏蔽手势处理 configure.shiledGuestureVCs = @[NSClassFromString(@"TZPhotoPickerController"), @"TZAlbumPickerController", @"TZ"];
更多属性及方法可在demo中查看