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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容