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

  • 前景部分:就是指的显示电池、时间等部分;

  • 背景部分:就是显示黑色或者图片的背景部分;

    如下图:前景部分为白色,背景部分为黑色

注意:这里只涉及到ios7以及更高版本,低版本下面的讲解可能无效。

一、设置statusBar的【前景部分】

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

  • 默认的黑色(UIStatusBarStyleDefault
  • 白色(UIStatusBarStyleLightContent

可以设置的地方有两个:plist设置里面 和 程序代码里

按照UI给的图,因为背景颜色要突出,所以要求状态栏使用亮色,但实际上默认是黑色

这里使用两种方法:

第一种:你是要全工程的状态栏都要变白色:

操作AppDelegate

1)在info.plist中新增 View-Controller-based status bar appearance 属性,Value选择NO

2)在启动方法func application(...)下调用直接书写

UIApplication.sharedApplication().statusBarStyle = .LightContent

这样就可以把默认的黑色改为白色

启动App,完成,一次设置,所有页面都相同。但是出现对状态栏颜色有不同需求的话 就需要用到第2种方法

第二种:只是部分控制器需要修改状态栏文字的颜色:

操作ViewController

1)同样是对info.plist的操作,同方法1一样新增属性,不过这次的Value为YES

2)在ViewController中,可以重写以下方法即可

override func preferredStatusBarStyle() -> UIStatusBarStyle {

return .LightContent;

}

启动App,完成,更加灵活的操作。

二、设置statusBar的【背景部分】

背景部分,简单来说,就是背景色;改变方法有两种:

系统提供的方法

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

注意:一旦你设置了navigationBar- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics接口,那么上面的setBarTintColor接口就不能改变statusBar的背景色,statusBar的背景色就会变成纯黑色。

另辟蹊径

创建一个UIView, 
设置该UIView的frame.size 和statusBar大小一样, 
设置该UIView的frame.origin 为{0,-20}, 
设置该UIView的背景色为你希望的statusBar的颜色, 
在navigationBar上addSubView该UIView即可。

例:

info.plist中新增 View-Controller-based status bar appearance 属性,Value选择NO

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

// Override point for customization after application launch.

window = UIWindow(frame: UIScreen.mainScreen().bounds)

window?.rootViewController = UINavigationController(rootViewController: ViewController())

window?.backgroundColor = UIColor.whiteColor()

window?.makeKeyAndVisible()

// 状态栏字体白色

UIApplication.sharedApplication().statusBarStyle = .LightContent

// 状态栏背景颜色

// 在window上添加一个view保持在最前方, 需要注意的是这个view要在根视图控制器设置之后创建, 不然会出现显示不出来的情况

let stateBarBlockView = UIView(frame: CGRectMake(0, 0, window!.bounds.width, 20))

stateBarBlockView.backgroundColor = UIColor.blackColor()

window?.addSubview(stateBarBlockView)

window?.bringSubviewToFront(stateBarBlockView)

return true

}

Swift - 状态栏颜色显示(字体、背景)的更多相关文章

  1. iOS8中如何将状态栏的字体颜色改为白色

    网上的一些方法在我这行不通, 比如: UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent ...

  2. UGUI 字体背景长度自适应

    本文实现以下需求: 在UGUI中 Text为动态添加 要使Text字体背景随着Text的长度而变化 之前还在赞叹UGUI的强大 转念一想,UGUI中好像没有可以实现此功能的组件 也想出了一种办法 把背 ...

  3. 酷炫字体背景图的实现——神奇的background-clip: text

    愉快的时光总是飞快,七天小长假已接近尾声,抓住假期的尾巴,再学个新知识点——css的background-clip: text属性...会不会有种陌生的感觉,毕竟在我们的印象里,background- ...

  4. 李洪强iOS开发之-修改状态栏的字体的颜色

    李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [ ...

  5. 白底黑字!Android浅色状态栏黑色字体模式(另)

    小彬什么都想做任重致远 关注 2016.06.30 10:16* 字数 489 阅读 3234评论 3喜欢 12 前言 由于该死不死的设计湿,设计了一套白色状态栏的UI.当然在iOS上可以实现自适应, ...

  6. Swift自定义UINavigationController(背景颜色、背景图片、返回按钮设置、字体大小等)

    1.0  自定义UINavigationController时,背景图片.颜色等只需要设置一次,所以我们可以重写  initializa  这个方法来实现我们想要的效果 override  class ...

  7. android 设置状态栏与标题背景颜色一致

    必须在Android4.4以上版本才能设置状态栏颜色: 一.在单个Activity里面,设置状态栏的背景: 效果: 1.在Activity的布局根文件中添加属性: android:fitsSystem ...

  8. iOS设置状态栏的字体颜色

    设置statusBar的[前景色部分] 1.plist设置statusBar 在plist里增加一行 UIStatusBarStyle(或者是“Status bar style”也可以),这里可以设置 ...

  9. CSS 3. 文本|字体|背景|定位

    1.文本属性和字体属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

随机推荐

  1. ASP.NET、C#调用外部可执行exe文件--多种方案

    一. try { //方法一 //调用自己的exe传递参数 //Process proc = new Process(); //proc.StartInfo.FileName = @"D:\ ...

  2. EditorGUILayout.EnumPopup 枚举弹出选择菜单

    http://www.unity蛮牛.com/thread-25490-1-1.html http://www.unity蛮牛.com/m/Script/EditorGUILayout.EnumPop ...

  3. 14个Xcode中常用的快捷键操作(转)

    2014-12-24 17:31 编辑: suiling 分类:iOS开发 来源:iPhoneDev.tv 13 31621 Xcode 6Xcode快捷键 招聘信息: 开发工程师 iOS开发工程师 ...

  4. 使用 Intel HAXM 为 Android 模拟器加速,媲美真机

    http://www.cnblogs.com/beginor/archive/2013/01/13/2858228.html

  5. #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)

    原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...

  6. mysql 字符集设置方法

    php 5.6,mysql 5.5/etc/my.cnf (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值, 如 default-character-set = utf8c ...

  7. ajax初探01

    1.为什么使用ajax ajax使用异步处理模型,意味着在浏览器等待数据加载期间,用户可以做其他事情 在页面正在加载时使用ajax:使用ajax,浏览器可以向服务器请求一些数据,并且一旦数据请求发出, ...

  8. 开始做POI啦...

    库 为了效率搞了这么一个库: 现在版本号1.14(一月十四日更新版本囧..) http://pan.baidu.com/s/1c0SoGfu [source] http://pan.baidu.com ...

  9. ios中json解析出现的null问题

    http://my.oschina.net/iq19900204/blog/408034 在iOS开发过程中经常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式. 问题现象 但是几个 ...

  10. Node.js——Async

    一:流程控制 为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程 ...