QMUI_iOS
QMUI_iOS copied to clipboard
QMUITheme 主题切换时会覆盖当前界面的自定义样式
Bug 表现
在控制器
里实现QMUINavigationControllerAppearanceDelegate中定义的方法,方法内实现qmui_imageWithThemeProvider
,主题切换时没有调用此block。
截图
如何重现
1.实现QMUINavigationControllerAppearanceDelegate
的方法- (UIImage *)navigationBarBackgroundImage
2.进行主题切换
附:在Demo中的QMUIScrollAnimator示例中,主题切换也有点问题,Dark模式下,导航栏标题是黑色
预期的表现
正常情况下应该需要调用一次qmui_imageWithThemeProvider
,或者调用一次-(UIImage *)navigationBarBackgroundImage
其他信息
- 设备: 模拟器 - iPhone 11 Pro
- iOS 版本: iOS 13.0
- Xcode 版本: Xcode 11.0
- QMUI 版本: 4.0.3
目前的解决方案,在控制器里实现如下方法,手动更新当前导航栏的样式

找到原因了,在Dark的配置表中有一行代码
QMUICMI.navBarBackgroundImage = nil;
此代码将所有导航栏的背景置为nil,此方法-(UIImage *)navigationBarBackgroundImage
返回的动态image
也就不存在了
找到原因了,在Dark的配置表中有一行代码
QMUICMI.navBarBackgroundImage = nil;
此代码将所有导航栏的背景置为nil,此方法-(UIImage *)navigationBarBackgroundImage
返回的动态image
也就不存在了
主要的问题在于 QMUITheme 控件在主题发生变化时,一定都是以全局样式为准,于是会覆盖 vc 里自定义的样式,这个问题还在思考如何解决好一点,目前也确实只能用你说的方式,vc 自己再更新一次。