美文网首页
解决苹果导航栏隐藏显示的问题

解决苹果导航栏隐藏显示的问题

作者: 赵永洪 | 来源:发表于2019-04-03 16:02 被阅读0次

    首先是出现的问题:

    1.push一个控制器,返回按钮和标题神奇的消失了,打开三维视图(比较坑的是有的版本老到打不开三维视图 

    ),发现返回按钮和标题并没有消失,而是被一层视图挡到了。

      2.有文本输入的地方,在iOS10中文本框也消失了,导致无法输入内容。

      3.权限问题。

    其次是解决思路:

      1.顶层被莫名其妙的加了一层视图,感觉是自定义的导航栏的背景视图的层次出问题了,所以查看了自定义的导航栏,但是并没有,后来问了问,有一个应急的解决办法,就是给导航栏设置背景色,颜色取背景图片的颜色,在每一个用到该导航栏的试图控制器的viewWillAppear方法中重新设置一下导航栏,在viewWillDisappear里也重新设置一下。

      但是上面的方法仅适用于导航栏颜色为纯色,,所以为了更灵活,还有另一种方法,就是在viewWillAppear和viewWillDisappear方法里先将视图控制器的导航栏隐藏然后再显示

    - (void)viewWillAppear:(BOOL)animated{

        [super viewWillAppear:animated];

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

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

    }

    -(void)viewWillDisappear:(BOOL)animated {

        [super viewWillDisappear:animated];

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

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

    }

      第一次看到上面的代码时,我也跟你一样感到诧异,可是神奇的是它确实奏效了。

      为什么呢?简书的一位作者写过类似的博客,里面提到的原因是“iOS10在加载导航栏是总会加载系统的”。如果他说得对的话,也就是说push时系统会将自带的导航栏置顶,而隐藏后再显示只会显示自定义的导航栏。

      可是问题又来了,如果每一个视图控制器都加了上面的代码也是有问题的,问题是如果某视图控制器不需要继续push,那么该视图控制器会不能很好地适配iOS10,有时会返回到修改前的状态。解决方法是在进入该视图时判断是否需要跳转,如果需要继续跳转,则加上上面的代码,否则屏蔽掉。

      2.此处现在已知的方法是重新建立xib文件。

      3.iOS10 中某些权限是必须要加的

    原文:https://www.cnblogs.com/PaulpauL/p/6017817.html

    相关文章

      网友评论

          本文标题:解决苹果导航栏隐藏显示的问题

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