在 iOS 7 后,导航栏增加了 translucent 效果,这使得导航栏背景色的变化出现了两种情况:

1.translucent 属性值为 YES 的前提下,更改导航栏的背景色。

2.translucent 属性值为 NO 的前提下,更改导航栏的背景色。

对于第一种情况,我们需要调用 UINavigationBar 的 setBackgroundColor: 方法。

这种方法显示的是渐变模糊效果的图片,没找到原因,推荐使用第二种

对于第二种情况我们需要调用 UINavigationBar 的 setBackgroundImage:forBarMetrics:方法。

[self.navigationController.navigationBar setBackgroundImage:[self imageWithColor:UIColor.blueColor] forBarMetrics:UIBarMetricsCompactPrompt];

根据颜色生成图片

// 根据颜色生成UIImage
- (UIImage*)imageWithColor:(UIColor*)color{CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);// 开始画图的上下文UIGraphicsBeginImageContext(rect.size);// 设置背景颜色[color set];// 设置填充区域UIRectFill(CGRectMake(0, 0, rect.size.width, rect.size.height));// 返回UIImageUIImage* image = UIGraphicsGetImageFromCurrentImageContext();// 结束上下文UIGraphicsEndImageContext();return image;
}

对于第二种情况,这里有三点需要提示:

1.在设置透明效果时,我们通常可以直接设置一个 [UIImage new] 创建的对象,无须创建一个颜色为透明色的图片。

2.在使用 setBackgroundImage:forBarMetrics: 方法的过程中,如果图像里存在 alpha 值小于 1.0 的像素点,则 translucent 的值为 YES,反之为 NO。也就是说,如果我们真的想让导航栏变成纯色且没有 translucent 效果,请保证所有像素点的 alpha 值等于 1。

3.如果设置了一个完全不透明的图片且强行将 NavigationBar 的 translucent 属性设置为 YES 的话,系统会自动修正这个图片并为它添加一个透明度,用于模拟 translucent 效果。

4.如果我们使用了一个带有透明效果的图片且导航栏的 translucent 效果为 NO 的话,那么系统会在这个带有透明效果的图片背后,添加一个不透明的纯色图片用于整体效果的合成。这个纯色图片的颜色取决于 barStyle 属性,当属性为 UIBarStyleBlack 时为黑色,当属性为 UIBarStyleDefault 时为白色,如果我们设置了 barTintColor,则以设置的颜色为基准。

iOS 修改导航栏背景色相关推荐

  1. ios 系统状态栏样式修改_iOS 一种新的修改导航栏样式的方法(支持iOS10).

    iOS 一种新的修改导航栏样式的方法. 开宗明义: 对系统导航栏最底层的UIView加一层CALayer, 通过操作这个自己创建的CALayer来修改导航栏样式. 修改系统导航栏样式的几种方法 1.使 ...

  2. iOS设置导航栏和状态栏

    文章目录 iOS 15 之后导航栏背景色的设置 1.状态栏设置 1.1.没有导航栏 1.2.有导航栏 2.导航栏背景和字体颜色 2.1.十六进制颜色转RGB 2.2.生成纯色图片 3.导航栏的另外一种 ...

  3. iOS 设置导航栏背景颜色

    //导航栏背景色UIColor *navBarColor = [UIColor colorWithRGB_au:0xD42D37];if (@available(iOS 15.0, *)) {UINa ...

  4. iOS 解决导航栏pop返回时出现黑块问题!

    iOS 解决导航栏pop返回时出现黑块问题! 问题描述: 导航栏正常从A页面push到B页面,从B页面pop返回A页面时遇到过渡过程中导航栏出现黑块的问题. 如截图所示: 问题原因: A界面导航栏被影 ...

  5. IOS设置导航栏返回按钮,并添加事件返回主页面

    IOS设置导航栏返回按钮,并添加事件返回主页面 前提是已经push了一个viewController了.才能使用. XXXTableViewController 里面书写 - (void)viewDi ...

  6. IOS设置导航栏的背景图片和文字

    IOS设置导航栏的背景图片和文字 - (void)viewDidLoad {[super viewDidLoad];[self.navigationBar setBackgroundImage:[UI ...

  7. ios 添加导航栏视图_iOS进度栏(进度视图)

    ios 添加导航栏视图 In this tutorial, we'll be discussing the UIProgressView component and create a progress ...

  8. uniapp 动态修改导航栏 之前使用this.$mp.page page提示未定义

    uniapp 动态修改导航栏 // 使用条件编译 防止H5报错// #ifdef APP-PLUSlet pages = getCurrentPages();let page = pages[page ...

  9. ios15从隐藏系统导航栏页面进入显示系统导航栏页面后,期望系统导航栏背景色为白色,但是导航栏背景变成黑色问题

    ios15从隐藏系统导航栏页面进入显示系统导航栏页面后,期望系统导航栏背景色为白色,但是导航栏背景变成黑色问题. 经过多次分析是因为底层大背景被设置了默认颜色引起,把它设置成对应白色就可以了: sel ...

最新文章

  1. 如何优雅的使用 phpStorm 开发工具
  2. JS事件冒泡机制和兼容性添加事件
  3. python3接收、解析邮件
  4. 4 微信公众号开发 被动回复消息 回复没有反应怎么办
  5. vue-cli打包后怎么修改服务器地址实践有效
  6. 全局路径规划:图搜索算法介绍2(A star)
  7. 使用Nsight查找CE3的渲染bug
  8. 超强干货!AI、Python、机器学习课程免费学,请尽快领取!
  9. 《jQuery EasyUI开发指南》——导读
  10. CENTOS 指定 yum 阿里云 源
  11. php/html+css+js制作计算器
  12. S3C2440 ADC采样光敏电阻传感器驱动
  13. 为promise增加abort功能
  14. 阿里巴巴争夺中国蓬勃发展的电动汽车市场
  15. Microsoft Office安装全过程记录
  16. python为啥爬取数据会有重复_使用python爬取B站千万级数据
  17. 零基础入门金融风控-贷款违约预测_Task1
  18. 关于kindle使用的文章
  19. Anchor-free的目标检测文章
  20. python中reversed是什么意思_Python reversed函数及使用方法解析

热门文章

  1. 1838.最高频元素的频数
  2. Spring Boot 注解原理
  3. 微信小程序配置服务器域名和业务域名
  4. windows10纯净版系统安装/重装详细教程
  5. 弱电系统的布线施工应注意什么?
  6. 每日一课 | 在Python中获取列表的长度和大小
  7. 【Python】将多个jpg合并成一个pdf
  8. 基本概念学习(十)---系统
  9. And and Pair
  10. 2016 清华 计算机 考研 经验 总结