IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html
先看效果图:
在自定义导航栏背景时,可能会遇到以下一些问题:
1、当设置导航栏背景后,状态栏的颜色也会跟着一起改变掉,这可能不是你说希望看到的
2、IOS7以上的版本和低版本显示出来的导航栏高度位置有差别,这个差别就是状态栏的高度20,为了兼容低版本,必须统一
解决思路:
1、不正常的是状态栏的背景也一起变了,而状态栏的文字是可以通过其他API去设置的:如 [[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
2、文字是附于背景上方的,因此考虑在这之间插入一个矩形颜色块(甚至图片也可以)
3、根据这种思路,第二种思路也随之产生,就是制作出20+44=64高度的图片,作为导航栏背景图,其中上方20为状态栏的颜色。
4、本文实现第一种思路,并且模拟器和真机以及IOS6,7均已验证可行
//7.0以上版本通过一句代码解决高度上升问题
if ([[[UIDevicecurrentDevice] systemVersion] doubleValue]>=7.0) {
self.edgesForExtendedLayout=UIRectEdgeNone;
}
//创建一个高20的假状态栏背景
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, 320, 20)];
//将它的颜色设置成你所需要的,这里我选择了黑色,表示我很沉稳
statusBarView.backgroundColor=[UIColor blackColor];
//这里我的思路是:之前不理想的状态是状态栏颜色也变成了导航栏的颜色,但根据这种情况,反而帮助我判断出此时的状态栏也是导航栏的一部分,而状态栏文字浮于上方,因此理论上直接在导航栏上添加一个subview就是他们中间的那一层了。
//推得这样的代码:
[self.navigationController.navigationBar addSubview:statusBarView];
//修改导航栏文字颜色,这里我选择白色,表示我很纯洁
[[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
//设置导航栏的背景图片
[self.navigationController.navigationBarsetBackgroundImage:[UIImageimageNamed:@"bg.jpg"] forBarMetrics:UIBarMetricsDefault];
转载于:https://www.cnblogs.com/Peak-Banish/p/4042111.html
IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)相关推荐
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...
- 【微信小程序】小程序之自定义头部导航栏背景图
一般的导航栏都是微信自定义生成的,但是有的项目项目当中感觉头部样式太过单调,不怎么好看.就设计了不要小程序头部标题栏的页面,为此找了好多方法都没有解决.最终还是让我给找到了一个解决的方法.就是在jso ...
- 定制iOS 7中的导航栏和状态栏
近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这也就意味着导航栏 ...
- 自定义iOS导航栏背景,标题和返回按钮文字颜色-----转载自gyz413977349
在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...
- 自定义导航栏背景图片和颜色
首先准备导航栏背景图片,大小 320x44, @2x文件大小640x88,iOS5以后更改背景图片较简单 UINavigationBar *navBar = self.navigationContro ...
- 使用 CSS 构建自定义粘性导航栏
导航栏可能是让用户轻松浏览您的网站而不会迷路的最佳方式. 人们通常将导航栏放在页面的最顶部,但如果它与您的设计相得益彰,您也可以在网页的任一侧放置导航栏.导航栏可以是导航项目的水平列表,也可以是小屏幕 ...
- 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)
最近在写商城,中途遇到了需要自定义修改导航栏的操作,大概是如下图接过样子的,于是想手写一份,但我发现右上角的分享按钮在不同设备离顶部的距离是不一样的,于是找了下官方划水员写的文档(点这里查看),(⊙o ...
- react native 之自定义顶部导航栏,实现标题居中可控
本来一直用的都是RN自带的组件react-navigation,但是后面需求有变,需要顶部导航栏目的标题可以自己控制,同一页面的标题根据数据库查出来的内容变化.因此自定义了一个导航栏目,实现需求. 关 ...
- uniapp开发微信小程序自定义顶部导航栏
自定义导航栏渐变色,先上效果 使用uniapp开发小程序,在不同界面,要去对页面进行修改顶部导航栏. 比如说要去定义导航栏的背景颜色,常规的去定义导航栏背景颜色 全局定义导航栏 "windo ...
最新文章
- ibm服务器报错代码大全_微信认证订阅号开发者模式服务器配置自定义菜单PHP独立完整版...
- 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
- OSError: [WinError 126] 找不到指定的模块————Shapely
- Table 'mysql.plugin' doesn't exist引发de血案
- 队列(常用数据结构之一)
- 碧雪情天服务器地址源如何修改,今天维护吗,碧雪情天怎么进不去啊,知道的说一下...
- LeetCode算法题-Repeated String Match(Java实现)
- [Err] ORA-00979: not a GROUP BY expression
- 学计算机专业独立显卡有必要吗,不玩游戏独立显卡有什么作用_如果不玩游戏需要选择独立显卡吗-系统城...
- Oracle学习 第18天 .NET连接Oracle
- 正确下载谷歌浏览器Chrome本地安装包 ,能离线安装
- Visio 不能使用方向键移动图形的解决办法
- linux命令4--rmrmdir
- mysql rounddown_Is there a ROUNDDOWN() function in sql as there is in EXCEL
- 编译原理第五章课后题
- RabbitMQ-KeepLive
- 上位机和下位机笔记总结
- 【c++ primer5】重点知识总结
- SDN是什么东东???
- 更完善的 Docker + Traefik 使用方案
热门文章
- SQL语句查询条数不足10行时如何自动补充空行
- JavaScript验证表单数据,HTML自动验证表单数据是否为空,数字范围
- android开发那些事儿(五)-通用流行框架大全
- ArcGIS10.6使用ArcGIS Diagrammer
- PowerCMD——cmd的命令行工具
- C#图片处理之: 获取数码相片的EXIF信息(二)
- 【java学习之路】(java SE篇)009.IO
- java后台如何国际化,Java SpringMVC实现国际化整合案例分析(i18n)
- mysql中sql批量插入_sql中insert如何批量插入多条记录?
- roadrunner监控linux服务器,Jenkins添加TPS与服务器监控变化曲线图