Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.11k stars 1.39k forks source link

AutomaticCustomNavigationBarTransitionStyle 在前后两个导航栏的显隐状态不一致时会有问题 #1335

Closed dongq0916 closed 2 years ago

dongq0916 commented 2 years ago

Bug 表现 已用 #1330 临时解决方案 有导航(颜色和配置文件设置的中不同)的A界面push到无导航的B界面 返回时A界面导航暂时显示的是配置文件的颜色 返回完成后显示A界面导航配置应有的颜色

Demo QMUIDemo.zip

预期的表现 返回时A界面显示应有的颜色效果

其他信息

MoLice commented 2 years ago

① 开始切换界面(push/pop),给左右两个 vc 加上假 bar。 ② 把系统 navigationBar 和即将显示的 vc 的假 bar 绑定在一起,系统 bar 的样式更新时都同步到假 bar 上。

如果前后导航栏都是显示的,则到这里就完成导航栏动画了,一切以符合预期的方式运转。 如果前后导航栏显隐状态不一样,在①里并不会给 vc 加上假 bar,而是跳过,等到③里才会判断是否要添加假 bar。而在③的实现里:

在④时,为了将当前的系统 bar 样式同步给创建出来的假 bar,会立即做一次“关联又取消关联”的操作,这里“取消关联”会覆盖掉上文②,导致后续系统 bar 的样式变化不会再同步给假 bar,从而出现 issue 里描述的现象。

新版本会修复该问题,在此之前可将以下文件替换本地 QMUI 来临时解决: UINavigationController+NavigationBarTransition.m.zip

MoLice commented 2 years ago

已发布 4.4.1 修复该问题。