zoukankan      html  css  js  c++  java
  • iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了

    苹果系统升级后好多应用都发了新版本来适配,今天就来分享一下我的适配历程。

    首先是出现的问题:

      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 中某些权限是必须要加的

    (参考:http://blog.csdn.net/wang631106979/article/details/52578001),

    例如程序要拍照:Privacy - Camera Usage Description,

        麦克风:Privacy - Microphone Usage Description,

        定   位:Privacy - Location When In Use Usage Description,

        日   历:Privacy - Calendars Usage Description

    ******

    后面的内容与标题无关 推广下个人开发的APP 觉得还不错的 自己自己偷偷用就行了

    密码口袋

  • 相关阅读:
    XML 编码
    XML CDATA
    XML 命名空间
    XML 解析器
    XML XMLHttpRequest 对象
    XML 和CSS
    XML 验证
    XML 属性
    XML 元素
    XML 语法规则
  • 原文地址:https://www.cnblogs.com/PaulpauL/p/6017817.html
Copyright © 2011-2022 走看看