iOS 系統導航欄閃爍問題

之前技術群有人提出過這樣的問題,但我寫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,頁面背景色不同時跳轉,會有閃爍?效果不如系統本身的效果,暫時沒有應對方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容