最近测试给我提了个bug,我们的ReactNative插件的状态栏颜色总是在进入插件后一会被改变,最近任务比较多,但也没办法,只能想想怎么修了,虽然最终只改了一行代码就解决了,但是还是花了不少时间的,在此记录下。
当时修复的时候感觉没有头绪,状态栏颜色设置是在基类VC实现的,App进入插件后也不会去主动修改状态栏颜色,这不符合逻辑!
而且国内App没有这个问题,海外有,但是我印象中的国内海外的这部分逻辑应该是一致的,这就更不符合逻辑了。
当时觉得可能是ReactNative代码改了,和插件确认下,她也没改,锅没甩出去。
最后仔细分析发现,进入插件后,被盖住的页面的viewDidAppear又被调用了,被盖住的页面的父类的viewDidAppear里面实现了状态栏颜色设置,导致插件状态栏颜色不对。
为什么被盖住的页面的viewDidAppear会被调用呢,进一步分析发现,JXPagingView在push进入其他vc后,触发了被盖住的页面的viewDidAppear,这么设计是不符合VC生命周期的,但由于时间关系我没细看他为什么这么写。
那为什么国内App没有这个问题,海外有,发现海是外版的首页VC没有继承基类VC,之前看到这里觉得这不合理就给他改了,简单测试一下,也没发现问题,没想到这里有个这么大的坑等着我。