iOS 修改导航栏背景色
在 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 修改导航栏背景色相关推荐
- ios 系统状态栏样式修改_iOS 一种新的修改导航栏样式的方法(支持iOS10).
iOS 一种新的修改导航栏样式的方法. 开宗明义: 对系统导航栏最底层的UIView加一层CALayer, 通过操作这个自己创建的CALayer来修改导航栏样式. 修改系统导航栏样式的几种方法 1.使 ...
- iOS设置导航栏和状态栏
文章目录 iOS 15 之后导航栏背景色的设置 1.状态栏设置 1.1.没有导航栏 1.2.有导航栏 2.导航栏背景和字体颜色 2.1.十六进制颜色转RGB 2.2.生成纯色图片 3.导航栏的另外一种 ...
- iOS 设置导航栏背景颜色
//导航栏背景色UIColor *navBarColor = [UIColor colorWithRGB_au:0xD42D37];if (@available(iOS 15.0, *)) {UINa ...
- iOS 解决导航栏pop返回时出现黑块问题!
iOS 解决导航栏pop返回时出现黑块问题! 问题描述: 导航栏正常从A页面push到B页面,从B页面pop返回A页面时遇到过渡过程中导航栏出现黑块的问题. 如截图所示: 问题原因: A界面导航栏被影 ...
- IOS设置导航栏返回按钮,并添加事件返回主页面
IOS设置导航栏返回按钮,并添加事件返回主页面 前提是已经push了一个viewController了.才能使用. XXXTableViewController 里面书写 - (void)viewDi ...
- IOS设置导航栏的背景图片和文字
IOS设置导航栏的背景图片和文字 - (void)viewDidLoad {[super viewDidLoad];[self.navigationBar setBackgroundImage:[UI ...
- ios 添加导航栏视图_iOS进度栏(进度视图)
ios 添加导航栏视图 In this tutorial, we'll be discussing the UIProgressView component and create a progress ...
- uniapp 动态修改导航栏 之前使用this.$mp.page page提示未定义
uniapp 动态修改导航栏 // 使用条件编译 防止H5报错// #ifdef APP-PLUSlet pages = getCurrentPages();let page = pages[page ...
- ios15从隐藏系统导航栏页面进入显示系统导航栏页面后,期望系统导航栏背景色为白色,但是导航栏背景变成黑色问题
ios15从隐藏系统导航栏页面进入显示系统导航栏页面后,期望系统导航栏背景色为白色,但是导航栏背景变成黑色问题. 经过多次分析是因为底层大背景被设置了默认颜色引起,把它设置成对应白色就可以了: sel ...
最新文章
- 如何优雅的使用 phpStorm 开发工具
- JS事件冒泡机制和兼容性添加事件
- python3接收、解析邮件
- 4 微信公众号开发 被动回复消息 回复没有反应怎么办
- vue-cli打包后怎么修改服务器地址实践有效
- 全局路径规划:图搜索算法介绍2(A star)
- 使用Nsight查找CE3的渲染bug
- 超强干货!AI、Python、机器学习课程免费学,请尽快领取!
- 《jQuery EasyUI开发指南》——导读
- CENTOS 指定 yum 阿里云 源
- php/html+css+js制作计算器
- S3C2440 ADC采样光敏电阻传感器驱动
- 为promise增加abort功能
- 阿里巴巴争夺中国蓬勃发展的电动汽车市场
- Microsoft Office安装全过程记录
- python为啥爬取数据会有重复_使用python爬取B站千万级数据
- 零基础入门金融风控-贷款违约预测_Task1
- 关于kindle使用的文章
- Anchor-free的目标检测文章
- python中reversed是什么意思_Python reversed函数及使用方法解析