求助:通过AppDelegate设置UINavigationBar背景色呈现渐变而非纯色
解决导航栏背景色呈现渐变而非纯色的问题
嘿,我帮你排查了下问题,主要有两个关键点导致导航栏背景色不是纯色,咱们一步步来修复:
1. 先修正Alpha值的写法错误
你代码里的alpha: 100是不规范的,UIColor的alpha参数取值范围是0到1,虽然系统会把100自动识别为1.0,但咱们改成标准写法更稳妥:
UIColor(red: 159/255, green: 31/255, blue: 99/255, alpha: 1.0)
2. 适配iOS 15+的导航栏配置(核心解决点)
从iOS 15开始,苹果对UINavigationBar的外观逻辑做了调整,单纯设置backgroundColor已经无法覆盖默认的模糊/半透明效果,这就是你看到渐变的原因。咱们需要通过UINavigationBarAppearance来彻底关闭默认的模糊层,确保背景是纯色。
把你原来的导航栏配置代码替换成下面这段:
// 创建导航栏外观配置对象 let navBarAppearance = UINavigationBarAppearance() // 设置纯净的背景色,关闭默认模糊效果 navBarAppearance.backgroundColor = UIColor(red: 159/255, green: 31/255, blue: 99/255, alpha: 1.0) // 移除导航栏底部的阴影线(如果不需要的话) navBarAppearance.shadowColor = .clear // 配置标题文字颜色 navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] // 给导航栏应用配置,同时覆盖常规滚动和滚动到顶部两种状态的外观 UINavigationBar.appearance().standardAppearance = navBarAppearance UINavigationBar.appearance().scrollEdgeAppearance = navBarAppearance // 设置导航栏按钮(返回键、自定义按钮)的颜色 UINavigationBar.appearance().tintColor = UIColor.white
这样修改后,导航栏的背景色就会是你想要的纯色,不会再出现渐变效果啦。
内容的提问来源于stack exchange,提问作者Pratik Verma
相关产品推荐
相关产品推荐

