导航条切换黑边问题

// 以前在每个页面的 didload ... viewwillapper viewwilldisapper 写了无数这句话,各个页面乱七八糟
self.navigationController.navigationBar.hidden = xx;
// 右划返回出现前还没啥问题,自从出了右划返回简直坑不要太狠~(黑边)
// 以为很简单的bug结果搞了半天。。。。

解决方案

// BaseViewController中
/**
* nav的代理指向自己,实现代理方法
*  [self.navigationController setNavigationBarHidden:  animated: animated];
替代self.navigationController.navigationBar.hidden = xx;
*/
@interface KapBaseViewController ()<UIGestureRecognizerDelegate,UINavigationControllerDelegate>
@end

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.navigationController.delegate = self;
}

#pragma mark - Private Methods
#pragma mark -
#pragma mark Whether need Navigation Bar Hidden
- (BOOL) needHiddenBarInViewController:(UIViewController *)viewController {
    
    BOOL needHideNaivgaionBar = NO;
    // 自定义哪些页面需要隐藏
    if ([viewController isKindOfClass: NSClassFromString(@"ViewController")] ||
        [viewController isKindOfClass: NSClassFromString(@"KapMakeImageViewController")]) {
        needHideNaivgaionBar = YES;
    }
    return needHideNaivgaionBar;
}

#pragma mark - UINaivgationController Delegate
#pragma mark -
#pragma mark Will Show ViewController
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [navigationController setNavigationBarHidden: [self needHiddenBarInViewController: viewController]
                                             animated: animated];
}

抄袭自原文
参考stackoverflow

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容