ios 根视图导航栏隐藏时present或dismiss控制器 导航栏闪一下问题


由于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 。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容