美文网首页iOS Developer
iOS导航条显示与隐藏的坑

iOS导航条显示与隐藏的坑

作者: 啥都不会啊啊啊 | 来源:发表于2017-02-13 17:24 被阅读0次

    最近遇到在写导航条的显示与隐藏,界面A没有导航条,需要push出一个带导航的界面B。

    代码就是在navigationViewController.m文件实现UINavigationControllerDelegate的

    - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

    {

    [self setNavigationBarHidden:[self isNeedHidden] animated:YES];

    }

    其中isNeedHidden方法的逻辑参照需要自己处理。

    这里就可以实现导航条的显示与隐藏了,但是我这里稍微特殊的是界面A的状态栏是白色,界面B的状态栏是黑色,所以在界面A的.m文件中设置了方法

    - (UIStatusBarStyle)preferredStatusBarStyle{

    return UIStatusBarStyleLightContent;

    }

    单单这样设置就可以完成所需要的效果,但是在手势返回界面A的时候,如果快速滑动一小段距离后取消掉返回手势,当前的页面的状态栏就会出现隐藏掉的BUG。

    后来发现原来是设置状态栏的问题,最后在Nav中添加了

    - (UIStatusBarStyle)preferredStatusBarStyle

    {

    return UIStatusBarStyleDefault;

    }

    - (UIViewController *)childViewControllerForStatusBarStyle

    {

    if (需要显示为白色状态栏)

    {

    return self.topViewController;

    }

    return [super childViewControllerForStatusBarStyle];

    }

    这样就完美的解决了问题。

    相关文章

      网友评论

        本文标题:iOS导航条显示与隐藏的坑

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