美文网首页程序员
完美结局iPhoneX自定义tabBar重影问题

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

作者: 会飞的海豚哦 | 来源:发表于2018-05-24 14:24 被阅读0次

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

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

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

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

视图即将出现时进行删除

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

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

初始进入视图的时候

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

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

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

解决方法:

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

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

删除系统的tabBar

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

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

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

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

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

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

相关文章

网友评论

    本文标题:完美结局iPhoneX自定义tabBar重影问题

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