美文网首页
ios 根视图导航栏隐藏时present或dismiss控制器

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

作者: 辣白菜丶 | 来源:发表于2019-12-12 14:28 被阅读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 。

    相关文章

      网友评论

          本文标题:ios 根视图导航栏隐藏时present或dismiss控制器

          本文链接:https://www.haomeiwen.com/subject/zugzgctx.html