完美结局iPhoneX自定义tabBar重影问题

对于iOS开发者来说,底部的tabBar通常都是需要自定义,因为系统自带的或多或少和我们要求的总有一点的出入。

在自定义tabBar后,通常做法就是移除系统的tabBar来防止出现重影的问题。

在iPhoneX之前我们通常都是在导航中使用这样的方法来移除系统的tabBar的

iPhoneX之前移除系统的tabBar方法或者

视图即将出现时进行删除

效果呢如何,自然是不用多少。因为这是在iPhoneX之前最常用的消除系统系统tabBar的方法。

但是!在iPhoneX之后,我们在适配的时候,如果还是加上这段代码的话,在进入初始界面的时候,并没有发现什么问题。如图:

初始进入视图的时候

我们根据视图会发现并没有什么问题,如果点击按钮什么的进入下一级界面后,再次返回界面就会出现重影问题。如图:

在进入二级界面后再次返回后的视图

这时候问题出现了。我们明明在导航中删除了,为什么会在二级界面返回的时候仍会出现这样的问题?是这段代码没有起作用吗?显然不是的,因为我们在初次进入视图的时候,是没有出现重影的,但是在返回的时候,出现了重影。

解决方法:

第一种:直接在系统的tabBar中进行更改,这种方法是一个朋友介绍的,目前还没有尝试过,但是能用。

第二种:在自定义的TabBarController中。添加删除系统tabBar的代码。具体如下:

删除系统的tabBar

这样就完美解决了iOS 11,在返回时候tabb出现重影的问题。

原理:在iOS 11中,系统的控件(似乎是)只能隐藏,不能删除,再返回的时候,系统会自动判断,添加已删除的系统控件。(具体的真实性有待研究)。

这两者的代码区别是,前者我们只删除一次,后者是在前者基础上再删除一次,以防出现的时候不能删除,在viewWillAppear中删除只是保证删除一次。所以要进行多次删除。

这样多次删除会不会把本来不存在的删除会出现空指针访问错误?

不会的。因为我们是遍历他的子控件,发现有才去删除,所以并不会删除不存在的东西。

至此,重影问题完美解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注: 本文转自http://blog.csdn.net/bug_delete/article/details/78...
    QQWeb1234qwe阅读 656评论 0 1
  • 李敖先生走了,可是真正记得他的又有多少人呢 有多少心碎的时刻,去纪念一位伟人
    游橙子阅读 290评论 0 0
  • 上周四课程中老师让我们画了各种面具,呵呵,似乎撕面具的时刻到来了,撕吧,彻底的撕掉那些虚伪的自我,讨好的自我。不想...
    爱若嘉阅读 625评论 0 1
  • 12月31日,又是一年最后一天。地球公转了一圈又回到起点,可是在这一年经历过的人和事却不会再来一遍,这一天人们总需...
    tyhunter阅读 603评论 0 0
  • 我记得在2017年6月中旬,老师发给了我们一人一套史记,说实话当我第一眼看到它时真的是心生厌恶,文言文,虽然说...
    cy诺ooo阅读 522评论 0 4