ios 根视图导航栏隐藏时present或dismiss控制器

2019-12-12  本文已影响0人  辣白菜丶


由于app 个人中心 表头内容有纹理图片需要置顶 所以直接根视图隐藏了导航栏 子视图不隐藏导航栏。

问题1:

     子视图返回根视图的时候导航栏右上角出现透明块问题。

解决方法

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

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

}

- (void)viewWillDisappear:(BOOL)animated{

  [super viewWillDisappear:animated];

 [self.navigationController setNavigationBarHidden:NO animated:animated]

}


相信解决这个问题随便百度一下就很多答案。 主要说的是下面这个问题

问题2:

个人中心登录模态登录页面 或者登录完成 退出登录页面 个人中心的导航栏都会闪一下导航栏感觉很别扭。

出现这个问题是因为模态视图有导航栏 模态的时候导航栏从隐藏到显示 然后模态动画没这么快跟上导致的。

解决方法:

寻找解决方法使用了其他方法但是效果都不好 那就只能找源头了。

既然和模态有关那就找方法咯。 然后就找到这个属性  self.presentedViewController  模态相关这个属性不是nil

- (void)viewWillAppear:(BOOL)animated{

    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:(self.presentedViewController)?NO:animated];

}

- (void)viewWillDisappear:(BOOL)animated{

    [super viewWillDisappear:animated];

    if (!self.presentedViewController) {

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

    }

}

- (void)viewDidDisappear:(BOOL)animated{

    [super viewDidDisappear:animated];

    if (self.presentedViewController) {

        [self.navigationController setNavigationBarHidden:NO];

    }

}

通过上面的三个方法就解决了。

修改前后对比gif 。

上一篇下一篇

猜你喜欢

热点阅读