iOS 更改状态栏、导航栏颜色的几种方法
ios上状态栏 就是指的最上面的20像素高的部分
状态栏分前后两部分,要分清这两个概念,后面会用到:
前景部分:就是指的显示电池、时间等部分;
背景部分:就是显示黑色或者图片的背景部分;
(一)设置statusBar的【前景部分】
简单来说,就是设置显示电池电量、时间、网络部分标示的颜色, 这里只能设置两种颜色:
默认的黑色(UIStatusBarStyleDefault)
白色(UIStatusBarStyleLightContent)
可以设置的地方有两个:plist设置里面 和 程序代码里
初始化设置:导航栏设置为不透明并给了"标题"与状态栏文字作对比
self.edgesForExtendedLayout = 0;
self.navigationItem.title = @"标题";
改变状态栏的方法
方法一:
1、plist
View controller-based status bar appearance 设置为 NO
2、代码设置
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
效果如下:
方法二:
1、plist
View controller-based status bar appearance 设置为 YES 或者默认(不设置)
注意:
如果View controller-based status bar appearance为YES。
则[UIApplication sharedApplication].statusBarStyle 无效。
2、代码设置
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
或者在控制器中重写 preferredStatusBarStyle方法,修改状态栏颜色
- (UIStatusBarStyle)preferredStatusBarStyle {
// return UIStatusBarStyleLightContent;
return UIStatusBarStyleDefault;
}
(二)设置statusBar的【背景部分】
背景部分,简单来说,就是背景色;改变方法有两种:
1、系统提供的方法
navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色
self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
如果想将状态栏和导航栏字体全变为白色,这样就行
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
如果只想改变导航栏的字体颜色,可以这样
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];
还可以改变字体大小
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:25]}];
或者可以设置背景图片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image01"] forBarMetrics:UIBarMetricsDefault];
2、另辟蹊径
创建一个UIView,
设置该UIView的frame.size 和statusBar大小一样,
设置该UIView的frame.origin 为{0,-20},
设置该UIView的背景色为你希望的statusBar的颜色,
在navigationBar上addSubView该UIView即可。
原理:
状态栏区域相对于navigationBar的区域为
{0,-20,self.view.bounds.size.width,20}
除了改变状态栏的前景色(文字颜色,wifi颜色,时间颜色,电池颜色),就是改变背景色.由于状态栏区域上的控件是隐藏的,所以只要在状态栏区域被渲染了颜色,状态栏的背景颜色就跟着一起改变,从而改变了状态栏的背景颜色.
UIView *statusBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, self.view.bounds.size.width, 20)];
statusBarView.backgroundColor = [UIColor greenColor];
[self.navigationController.navigationBar addSubview:statusBarView];
另外图片透明处理
navigationBar为透明,注释掉self.edgesForExtendedLayout = 0;
// self.edgesForExtendedLayout = 0;
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]
self.navigationController.navigationBar.shadowImage = [UIImage new];
作者:致id
链接:http://www.jianshu.com/p/63f758796438
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
iOS 更改状态栏、导航栏颜色的几种方法的更多相关文章
- iOS 动态修改导航栏颜色 UINavigationBar
示例 所谓动态修改 意思是 在当前页面滚动的过程中 亦或 是在 触发返回事件\进入一个新的页面 导航栏的动态变化 由于系统级别的navBar 高度集成 很多自己想实现的功能 很不好弄 如果是通过 ...
- android: 获取屏幕高度和虚拟导航栏高度的几种方法
package com.yongdaimi.android.androidapitest; import android.app.Activity; import android.content.Co ...
- 【转】iOS中设置导航栏标题的字体颜色和大小
原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参 ...
- iOS中设置导航栏标题的字体颜色和大小
iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下. 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法. 方法一:(自定义视图的 ...
- IOS导航栏颜色渐变与常用属性
(转:http://www.cnblogs.com/Lingchen-start/archive/2015/10/23/4904361.html) 今年很忙,忙的写日志的时间都很少. 少的可怜. 自 ...
- IOS 导航栏颜色 标题
修改导航栏颜 #define COLOR_TOMATO [UIColor colorWithRed:255/255.0f green:99/255.0f blue:71/255.0f alpha ...
- iOS系统中导航栏的转场解决方案与最佳实践
背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...
- iOS frame从导航栏下面开始
iOS7.0 之后,页面布局默认延伸到了手机界面的边缘;导航栏背景成透明颜色. 解决fram从导航栏下面开始方法: 第一种: 将导航栏改成不透明即可 if( ([[[UIDevice currentD ...
- swift 自定义导航栏颜色
func setNavigationApperance(){ //自定义导航栏颜色 [self.navigationController?.navigationBar.barTintColor = U ...
随机推荐
- github多用户提交错误Permission to repo denied to
背景:同一台电脑的public key同时添加到了github的两个账户,导致user1的仓库没法正常提交. 解决办法:为两个账户分别配置ssh key,配置~/.ssh/config文件(windo ...
- Python 的枚举类型
起步 Python 中的枚举类型 Python 的原生类型中并不包含枚举类型.为了提供更好的解决方案,Python 通过 PEP 435 在 3.4 版本中添加了 enum 标准库. 枚举类型可以看作 ...
- vue-面试
1.单页面应用与多页面应用的去别 2.简述一下Sass.Less,且说明区别? 他们是动态的样式语言,是CSS预处理器,CSS上的一种抽象层.他们是一种特殊的语法/语言而编译成CSS.变量符不一样,l ...
- AutoItLibrary安装和常见问题解决
http://blog.csdn.net/bible_reader/article/details/52044345
- 简单封装微信小程序
一.不同环境配置封装 新建config文件夹,根据自己有不同环境设置不同的js文件 具体js文件内容: exports.config = { requestHost: 'https://******. ...
- 程序员代码面试指南:IT名企算法与数据结构题目最优解
第1章栈和队列 1设计一个有getMin功能的栈(士★☆☆☆) 1由两个栈组成的队列(尉★★☆☆) 5如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆) 8猫狗队列(士★☆☆☆)10用一个栈实现另一 ...
- C# 获取utc时间,以及utc datetime 互相转化
C# 获取utc时间,以及utc datetime 互相转化 大部分源于http://blog.sina.com.cn/s/blog_4c6e822d0102dsdz.html 刚开始学习一点C# ...
- 最新版ADT(Build: v22.6.2)总是引用appcompat_v7的问题
昨天在ADT Manager里更新了一些组件,结果ADT不支持.索性直接下载了最新的ADT.但是发现无论创建什么类型的应用(无论支持的最低API是多少,或者是不是用模板),都会在创建应用的同时创建一个 ...
- Codeforces Round #535(div 3) 简要题解
Problem A. Two distinct points [题解] 显然 , 当l1不等于r2时 , (l1 , r2)是一组解 否则 , (l1 , l2)是一组合法的解 时间复杂度 : O(1 ...
- 文件的打开函数第一类--fopen()
fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式); 其中, “文件指针名”必须是被说明为FILE 类型的指针变量: “文件名”是被打开文件的 ...