UINavigationBar隐藏问题

由于项目中使用FDFullscreenPopGesture框架,实现滑动返回功能。
在需要隐藏导航栏的控制器viewWillAppear方法中使用下面代码隐藏导航栏会出现问题

[self.navigationController setNavigationBarHidden:YES animated:NO];

从有NavigationBar到无NavigationBar,手势返回的时候,有NavigationBar的控制器导航栏会变成白色,或者消失不见了;
于是加上动画效果,问题解决,但页面会有明显上移的动画

[self.navigationController setNavigationBarHidden:YES animated:YES];

解决办法:使用FDFullscreenPopGesture框架的fd_interactivePopDisabled属性设置,隐藏导航栏

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.fd_prefersNavigationBarHidden = NO;
}

并且如果是控制器作为导航控制器的根控制器,需要在viewWillAppear:和viewWillDisappear:方法里面添加对是否隐藏NavigationBar的判断;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(CGFLOAT_MIN * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
   UIViewController *vc = [self.navigationController.viewControllers lastObject];
   if (vc.fd_prefersNavigationBarHidden) {
       [self.navigationController setNavigationBarHidden:YES animated:NO];
   } else {
       [self.navigationController setNavigationBarHidden:NO animated:NO];
   }
});

这样可以实现无NavigationBar控制器没有上移动画,并且从有NavigationBar到无NavigationBar正常滑动返回的功能。

参考文章:
https://www.jianshu.com/p/bbc2305d83e2

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

推荐阅读更多精彩内容

  • 一 窗外,天灰蒙蒙一片,绵绵细雨像一张网包裹着大地,轻柔的抚摸着万物。天气预报说本周会一直下雨,清明时节,天...
    米子迪阅读 3,555评论 0 9
  • 做了老师要求的mouse nose. 拼读训练
    阿迪_2135阅读 1,404评论 0 0
  • 王者荣耀注册玩家超过2亿,也就难怪游戏中会出现各种讨厌的喷子了,技术心态都不行,以下就是它们的一些显著的特征,你绝...
    emotion者阅读 1,709评论 0 0
  • 近段时间着实很累, 不管是因为自己的事, 生活的事, 工作的事, 一下子感觉到自己已经累上天了, 但,累并快乐着。...
    叶小胖阅读 3,887评论 1 2
  • 应该是游泳累的吧 快递到了 早上没做啥 下午睡觉 天气太热没去禅修 那么近也没去 将来应该也不会去了吧 听了友邻课...
    角落蜷缩阅读 721评论 0 0