IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)

时间:2023-01-31 15:07:18

为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html

先看效果图:

IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)

在自定义导航栏背景时,可能会遇到以下一些问题:

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];

IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)的更多相关文章

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

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

  2. 【转】自定义iOS7导航栏背景,标题和返回按钮文字颜色 -- 不错不错!!

    原文网址:http://blog.csdn.net/mad1989/article/details/41516743 在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更 ...

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

    原文:http://blog.csdn.net/mad1989/article/details/41516743 UIBarButtonItem,navigationItem,backBarButto ...

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

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

  5. iOS 7 教程:定制iOS 7中的导航栏和状态栏

    目录(?)[-] iOS 7中默认的导航栏 设置导航栏的背景颜色 在导航栏中使用背景图片 定制返回按钮的颜 修改导航栏标题的字体 修改导航栏标题为图片 添加多个按钮 修改状态栏的风格 隐藏状态栏 总结 ...

  6. (转)定制iOS 7中的导航栏和状态栏

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

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

    本文转载至 http://www.cocoachina.com/industry/20131104/7287.html 跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外 ...

  8. iOS导航栏背景,标题和返回按钮文字颜色

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

  9. 微信小程序 自定义头部导航栏和导航栏背景图片 navigationStyle

    ​ 这两天因为要做一个带背景的小程序头,哭了,小程序导航栏有背景也就算了,还得让导航栏上的背景顺下来,心态小崩.现在可以单独设置一个页面的小程序头了,但是前提是要微信7.0以上的版本,考虑到兼容性问题 ...

随机推荐

  1. Python实例学习-文件备份

    1. 介绍 通过实例学习Python的使用,该实例来自文献[1]中的第11章解决问题. 由于没有搞清楚Win7下如何通过命令行调用zip命令,所以采用7z[2],采用7-zip命令行版本[3],版本号 ...

  2. js写当鼠标悬浮及移开出现背景变化

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Java 比较两张图片的相似度

    import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; /** * 比较两张图片 ...

  4. oc语言--BLOCK和协议

    一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性:(1)可以保存代码(2 ...

  5. don&bsol;'t have permission access on this server听语音

    在网络上已经有很多的类型较多的框架,例如wamp,xmap等基于apache+mysql集成的框架,只要通过架包的方式,把相关的内容放到与这些的框架中后,启动服务器就可以执行架包内容,而在初始安装完成 ...

  6. Django----使用模板系统渲染博客页面、实现列表和详情页的跳转、前后跳转功能

    .模板写法同Flask,可以参考之前的FLask-模板 .将之前的BootStrap静态页面中的数据使用模板写 <!DOCTYPE html> <html lang="en ...

  7. node中间层转发请求

    前台页面: $.get("/api/hello?name=leyi",function(rps){ console.info(rps); }); node中间层(比如匹配api开头 ...

  8. 【Linux常用工具】

    tmux - 终端分屏工具 man - Help cat/more/less - 文件阅读 less还具有字符串搜索功能

  9. 《Cocos2d-x游戏开发实战精解》学习笔记2--在Cocos2d-x中显示一行文字

    在Cocos2d-x中要显示文字就需要用到Label控件.在3.x版本的Cocos2d中,舍弃了之前版本所使用的LabelTTF.LabelAtlas.LabelBMFont 3个用于显示文字的类,而 ...

  10. NSScanner 扫描字符串

    两个常用于扫描字符串的方法 //'指针'只移动一个位置,判断当前所指的字符是否是目标字符@"x", 若是则存入result中,返回YES,否则NO BOOL res = [scan ...