之前技術群有人提出過這樣的問題,但我寫demo并沒有復現。后來項目出現了同樣的問題,iOS 12 上表現正常。現象如下圖
經過反復測試發現這個問題出現的條件是:
1、頁面1的顏色差別較大
2、導航欄 isTranslucent = true
3、底部標簽欄 isTranslucent = true
4、push的時候 hidesBottomBarWhenPushed = true
5、頁面2 導航欄沒有隱藏(這是廢話),頁面1 導航欄是否隱藏不重要
解決方法:
1、self.tabBar.isTranslucent = false
2、navigationController?.navigationBar.isTranslucent = false
3、hidesBottomBarWhenPushed = false
這三種解決方法限制比較大,算是一種解決思路吧,比如標簽欄透明不重要的話就可以使用方法1
4、navigationController?.navigationBar.setBackgroundImage(UIColor.white.withAlphaComponent(0.8).toUIImage(), for: .default)
5、自定義導航欄
6、使用三方庫解決,例如 YPNavigationBarTransition、KMNavigationBarTransition、RTRootNavigationController、QMUI等
KMNavigationBarTransition使用過程中發現有兩個問題,我在GitHub上提了issues:
1、navigationController?.navigationBar.shadowImage 設置異常失效?有應對的方法
2、navigationBar.isTranslucent = true,頁面背景色不同時跳轉,會有閃爍?效果不如系統本身的效果,暫時沒有應對方法