为尊重文章原作者,转载务必注明原文地址: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以及低版本)相关推荐

  1. 自定义iOS7导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  2. 【微信小程序】小程序之自定义头部导航栏背景图

    一般的导航栏都是微信自定义生成的,但是有的项目项目当中感觉头部样式太过单调,不怎么好看.就设计了不要小程序头部标题栏的页面,为此找了好多方法都没有解决.最终还是让我给找到了一个解决的方法.就是在jso ...

  3. 定制iOS 7中的导航栏和状态栏

    近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这也就意味着导航栏 ...

  4. 自定义iOS导航栏背景,标题和返回按钮文字颜色-----转载自gyz413977349

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  5. 自定义导航栏背景图片和颜色

    首先准备导航栏背景图片,大小 320x44, @2x文件大小640x88,iOS5以后更改背景图片较简单 UINavigationBar *navBar = self.navigationContro ...

  6. 使用 CSS 构建自定义粘性导航栏

    导航栏可能是让用户轻松浏览您的网站而不会迷路的最佳方式. 人们通常将导航栏放在页面的最顶部,但如果它与您的设计相得益彰,您也可以在网页的任一侧放置导航栏.导航栏可以是导航项目的水平列表,也可以是小屏幕 ...

  7. 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)

    最近在写商城,中途遇到了需要自定义修改导航栏的操作,大概是如下图接过样子的,于是想手写一份,但我发现右上角的分享按钮在不同设备离顶部的距离是不一样的,于是找了下官方划水员写的文档(点这里查看),(⊙o ...

  8. react native 之自定义顶部导航栏,实现标题居中可控

    本来一直用的都是RN自带的组件react-navigation,但是后面需求有变,需要顶部导航栏目的标题可以自己控制,同一页面的标题根据数据库查出来的内容变化.因此自定义了一个导航栏目,实现需求. 关 ...

  9. uniapp开发微信小程序自定义顶部导航栏

    自定义导航栏渐变色,先上效果 使用uniapp开发小程序,在不同界面,要去对页面进行修改顶部导航栏. 比如说要去定义导航栏的背景颜色,常规的去定义导航栏背景颜色 全局定义导航栏 "windo ...

最新文章

  1. ibm服务器报错代码大全_微信认证订阅号开发者模式服务器配置自定义菜单PHP独立完整版...
  2. 使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
  3. OSError: [WinError 126] 找不到指定的模块————Shapely
  4. Table 'mysql.plugin' doesn't exist引发de血案
  5. 队列(常用数据结构之一)
  6. 碧雪情天服务器地址源如何修改,今天维护吗,碧雪情天怎么进不去啊,知道的说一下...
  7. LeetCode算法题-Repeated String Match(Java实现)
  8. [Err] ORA-00979: not a GROUP BY expression
  9. 学计算机专业独立显卡有必要吗,不玩游戏独立显卡有什么作用_如果不玩游戏需要选择独立显卡吗-系统城...
  10. Oracle学习 第18天 .NET连接Oracle
  11. 正确下载谷歌浏览器Chrome本地安装包 ,能离线安装
  12. Visio 不能使用方向键移动图形的解决办法
  13. linux命令4--rmrmdir
  14. mysql rounddown_Is there a ROUNDDOWN() function in sql as there is in EXCEL
  15. 编译原理第五章课后题
  16. RabbitMQ-KeepLive
  17. 上位机和下位机笔记总结
  18. 【c++ primer5】重点知识总结
  19. SDN是什么东东???
  20. 更完善的 Docker + Traefik 使用方案

热门文章

  1. SQL语句查询条数不足10行时如何自动补充空行
  2. JavaScript验证表单数据,HTML自动验证表单数据是否为空,数字范围
  3. android开发那些事儿(五)-通用流行框架大全
  4. ArcGIS10.6使用ArcGIS Diagrammer
  5. PowerCMD——cmd的命令行工具
  6. C#图片处理之: 获取数码相片的EXIF信息(二)
  7. 【java学习之路】(java SE篇)009.IO
  8. java后台如何国际化,Java SpringMVC实现国际化整合案例分析(i18n)
  9. mysql中sql批量插入_sql中insert如何批量插入多条记录?
  10. roadrunner监控linux服务器,Jenkins添加TPS与服务器监控变化曲线图