iOS 更改状态栏、导航栏颜色的几种方法

ios上状态栏 就是指的最上面的20像素高的部分
状态栏分前后两部分,要分清这两个概念,后面会用到:

前景部分:就是指的显示电池、时间等部分;
背景部分:就是显示黑色或者图片的背景部分;

(一)设置statusBar的【前景部分】

简单来说,就是设置显示电池电量、时间、网络部分标示的颜色, 这里只能设置两种颜色:

默认的黑色(UIStatusBarStyleDefault)
白色(UIStatusBarStyleLightContent)
可以设置的地方有两个:plist设置里面 和 程序代码里
初始化设置:导航栏设置为不透明并给了"标题"与状态栏文字作对比

                   self.edgesForExtendedLayout = 0;
                   self.navigationItem.title = @"标题";

只设置navigationBar不透明和写了一个标题.png

改变状态栏的方法
方法一:
1、plist
View controller-based status bar appearance 设置为 NO

设置为NO.png

2、代码设置

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

效果如下:

状态栏白色.png

方法二:
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;

状态栏导航栏文字都白色,背景黑色.png

或者在控制器中重写 preferredStatusBarStyle方法,修改状态栏颜色

- (UIStatusBarStyle)preferredStatusBarStyle {
//    return UIStatusBarStyleLightContent;
    return UIStatusBarStyleDefault;
}

(二)设置statusBar的【背景部分】
背景部分,简单来说,就是背景色;改变方法有两种:

1、系统提供的方法

navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色

self.navigationController.navigationBar.barTintColor = [UIColor greenColor];

纯粹的背景色设置,默认字体都是黑色.png

如果想将状态栏和导航栏字体全变为白色,这样就行

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

此行代码能将状态栏和导航栏字体颜色全体改变,只能是黑色或白色.png

如果只想改变导航栏的字体颜色,可以这样

[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];

在默认显示的标题中直接修改文件的大小和颜色也是可以的.png

还可以改变字体大小

[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:25]}];

改变字体颜色大小.png

或者可以设置背景图片

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image01"] forBarMetrics:UIBarMetricsDefault];

图片背景.png

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

改变状态栏的背景颜色.png

另外图片透明处理
navigationBar为透明,注释掉self.edgesForExtendedLayout = 0;

// self.edgesForExtendedLayout = 0;
 [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]
 self.navigationController.navigationBar.shadowImage = [UIImage new];

图片透明设置.png

作者:致id
链接:http://www.jianshu.com/p/63f758796438
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

时间: 2024-12-09 16:54:21

iOS 更改状态栏、导航栏颜色的几种方法的相关文章

关于网页导航栏制作的几种方法与常见问题解决(新人向)

无序列表是html页面排版经常用到的非常实用的标签,但是新手在使用无序列表时,经常会在横向排版上出现问题,笔者在这里提供了笔者在使用无序列表制作网页导航栏时的几种方法与常见问题的解决问题.(以css内部样式为例) [注:有同学之前问过我怎么制作一张网页,但只会html,本文用到均为css.故说明:若急需制作导航,无css技术基础的,在<head>标签中加<style rel="stylesheet" type="text/css"><s

【转】iOS中设置导航栏标题的字体颜色和大小

原文网址:http://www.360doc.com/content/15/0417/11/20919452_463847404.shtml iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下. 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法. 方法一:(自定义视图的方法,一般人也会采用这样的方式) 就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了.

ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏

作者:shede333 主页:http://my.oschina.net/shede333 && http://blog.sina.com.cn/u/1509658847 版权声明:原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0][] IOS上 关于状态栏的相关设置(UIStatusBar) 知识普及 ios上状态栏 就是指的最上面的20像素高的部分 状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就是

IOS 导航栏颜色 标题

修改导航栏颜 1 #define COLOR_TOMATO    [UIColor colorWithRed:255/255.0f green:99/255.0f blue:71/255.0f alpha:1.0f]     /*!< 番茄色 */ 2 3 self.navigationController.navigationBar.barTintColor = COLOR_TOMATO;//修改导航栏颜色 修改导航栏标题字体(大小.颜色) 1 self.navigationControlle

ios 导航栏透明, 上下滑动 导航栏 颜色渐变

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3d1d81 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 } p.p4 {

TableView下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变

TableView 下拉表头放大 导航栏颜色透明度随着TableView偏移量渐变 用storeboard 布局,之前尝试在storeboard中设置tableview的表头,但是那样弄出来的效果 表头不贴着上面,后来改成storeboard和代码 结合,最后实现的这个效果 下载链接: https://github.com/ShaoWenLe/TableViewThe-drop-down-amplification.git import UIKit let KScreen_Width = UIS

设置全局导航栏颜色,标题大小和UIBarButtonItem字体大小

设置全局导航栏颜色,标题大小和UIBarButtonItem字体大小 在appdelegate里面设置 swift: UINavigationBar.appearance().barTintColor = UIColor.init(red: 47, green: 48, blue: 52) UINavigationBar.appearance().tintColor = UIColor.whiteColor() UINavigationBar.appearance().titleTextAttr

adb工具去掉wifi感叹号、隐藏状态栏/导航栏

adb还原恢复: adb shell "settings delete global captive_portal_use_https" ===================================================================================================================== 前提:无需解锁.无需ROOT!!! 1.手机打开"开发者选项/模式",开启"USB调试

ios iphone6&amp;plus 导航栏 变高

问题环境: 1.xcode6.2工程代码 在xcode6.3 编译后 运行导航栏 变高: 解决方法: Images.xcassets  ----> LaunchImage---->右键--->new launch image-->适配 iphone6 &plus 尺寸: 注意:新建的 new launch image 可能名字是LaunchImage-1 :运行后导航栏还是变高:怎么回事了?想想 把LaunchImage-1改回LaunchImage就ok了