美文网首页
关于导航栏隐藏和显示 出现的屏幕花屏

关于导航栏隐藏和显示 出现的屏幕花屏

作者: MoneyLee | 来源:发表于2017-02-23 17:16 被阅读44次

    上一个界面要求隐藏导航栏 下一个界面显示导航栏
    - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController.navigationBar setHidden:YES]; }
    - (void)viewWillDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; [self.navigationController.navigationBar setHidden:NO]; }
    这样写的话屏幕在界面切换的时候会很不舒服 造成用户体验性很差
    - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; }
    - (void)viewWillDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; [self.navigationController setNavigationBarHidden:NO animated:animated]; }
    如此写的话就不会出现这种情况 完美解决

    问题分析

    在网上查了一圈 发现如下阐述
    应该是UINavigationController 在导航栏控制API上设计的缺陷,一个UINavigationController管理了N个UIViewController栈式的push和pop,而UINavigationBar 有UINavigationController管理.这就导致了UIViewConstroller无法控制自己上面bar单独隐藏和显示,非常类似UIApplication全局的status bar,不过在iOS7之后为viewController控制自己的status bar 提供下面的几个方法:
    -(BOOL)prefersStatusBarHidden;
    -(UIStatusBarStyle)preferredStatusBarStyle;
    -(UIStatusBarAnimation)preferredStatusBarUpdateAnimation;

    相关文章

      网友评论

          本文标题:关于导航栏隐藏和显示 出现的屏幕花屏

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