最近測試給我提了個(gè)bug,我們的ReactNative插件的狀態(tài)欄顏色總是在進(jìn)入插件后一會被改變,最近任務(wù)比較多,但也沒辦法,只能想想怎么修了,雖然最終只改了一行代碼就解決了,但是還是花了不少時(shí)間的,在此記錄下。
當(dāng)時(shí)修復(fù)的時(shí)候感覺沒有頭緒,狀態(tài)欄顏色設(shè)置是在基類VC實(shí)現(xiàn)的,App進(jìn)入插件后也不會去主動修改狀態(tài)欄顏色,這不符合邏輯!
而且國內(nèi)App沒有這個(gè)問題,海外有,但是我印象中的國內(nèi)海外的這部分邏輯應(yīng)該是一致的,這就更不符合邏輯了。
當(dāng)時(shí)覺得可能是ReactNative代碼改了,和插件確認(rèn)下,她也沒改,鍋沒甩出去。
最后仔細(xì)分析發(fā)現(xiàn),進(jìn)入插件后,被蓋住的頁面的viewDidAppear又被調(diào)用了,被蓋住的頁面的父類的viewDidAppear里面實(shí)現(xiàn)了狀態(tài)欄顏色設(shè)置,導(dǎo)致插件狀態(tài)欄顏色不對。
為什么被蓋住的頁面的viewDidAppear會被調(diào)用呢,進(jìn)一步分析發(fā)現(xiàn),JXPagingView在push進(jìn)入其他vc后,觸發(fā)了被蓋住的頁面的viewDidAppear,這么設(shè)計(jì)是不符合VC生命周期的,但由于時(shí)間關(guān)系我沒細(xì)看他為什么這么寫。
那為什么國內(nèi)App沒有這個(gè)問題,海外有,發(fā)現(xiàn)海是外版的首頁VC沒有繼承基類VC,之前看到這里覺得這不合理就給他改了,簡單測試一下,也沒發(fā)現(xiàn)問題,沒想到這里有個(gè)這么大的坑等著我。