Tencent / QMUI_iOS

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

ios 15下 适配导航栏 返回按钮变成蓝色 #1309

Closed coderDeviCheng closed 2 years ago

coderDeviCheng commented 3 years ago

Bug 表现 ios 15下 按以下方式适配导航栏 返回按钮变成蓝色 if (@available(iOS 13.0, )) { UINavigationBarAppearance appearance = [[UINavigationBarAppearance alloc] init]; appearance.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleRegular]; self.navigationBar.scrollEdgeAppearance = appearance; }

截图 Bug 现场的界面截图,或者 Xcode 控制台的错误信息截图,有问题的代码截图

WeChat5d9ed79d5dd7248b049fe81e6b84a950

如何重现

  1. 更新到iOS15
  2. 按上面说的方法在QMUINavigationController的子类里面加入代码

预期的表现 返回按钮颜色正常

其他信息

coderDeviCheng commented 2 years ago

没人遇到过吗 你们怎么适配的?

jiasongs commented 2 years ago

我提供一个临时解决方案吧,这个方案「不正规」,但是能解决问题,如下 UINavigationBar:

图片

UITabBar:

图片

注意: 不用改动QMUI源码,只建议临时需要xcode 13打包的同学使用,不建议长期使用,说不定后面的SDK又改动了什么。正确的解决方案还是需要配置下standardAppearance等设置。

qianlishun commented 2 years ago
self.navigationBar.tintColor = [UIColor blackColor]; // 你要的颜色
CoderZbf commented 2 years ago

我提供一个临时解决方案吧,这个方案「不正规」,但是能解决问题,如下 UINavigationBar: 图片 UITabBar: 图片 注意: 不用改动QMUI源码,只建议临时需要xcode 13打包的同学使用,不建议长期使用,说不定后面的SDK又改动了什么。正确的解决方案还是需要配置下standardAppearance等设置。

你好 我这么设置怎么还是那样呢

MoLice commented 2 years ago

Bug 表现 ios 15下 按以下方式适配导航栏 返回按钮变成蓝色 if (@available(iOS 13.0, )) { UINavigationBarAppearance appearance = [[UINavigationBarAppearance alloc] init]; appearance.backgroundEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleRegular]; self.navigationBar.scrollEdgeAppearance = appearance; }

截图 Bug 现场的界面截图,或者 Xcode 控制台的错误信息截图,有问题的代码截图

WeChat5d9ed79d5dd7248b049fe81e6b84a950

如何重现

  1. 更新到iOS15
  2. 按上面说的方法在QMUINavigationController的子类里面加入代码

预期的表现 返回按钮颜色正常

其他信息

  • 设备: [例如模拟器、iPhone13Pro max]
  • iOS 版本: [iOS 15]
  • Xcode 版本: [Xcode 13]
  • QMUI 版本: [4.x.x]

你这样的写法,得到这样的运行效果,是符合预期的。因为 new 出来的 UINavigationBarAppearance 你没有设置它的 backButtonAppearance,所以默认就是系统的蓝色。

要么正确使用 iOS 13 系统的接口,要么跟 @qianlishun 说的一样,自己再补一个 tintColor,要么等 QMUI 4.4.0 发布,业务不要自己修改,而是通过 QMUI 配置表设置。