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,页面背景色不同时跳转,会有闪烁 效果不如系统本身的效果,暂时没有应对方法

你可能感兴趣的:(iOS 系统导航栏闪烁问题)