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. SQL按指定文字顺序进行排序(中文或数字等)

    在有些情况下我们需要按指定顺序输出数据,比如选择了ID in(3,1,2,5,4)我们希望按这个3,1,2,5,4的顺序输出,这样只使用order by ID是无法实现的, 但是我们可以使用order ...

  2. HDU 5384 字典树、AC自动机

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5384 用字典树.AC自动机两种做法都可以做 #include<stdio.h> #includ ...

  3. C#GDI+基础(三)画刷详解

    SolidBrush:一般的画刷,通常只用一种颜色去填充GDI+图形 创建一般画刷: SolidBrush sbBrush1 = new SolidBrush(Color.Green); HatchB ...

  4. HDU 3743 Frosh Week(归并排序求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 题目意思就是给你一个长为n的序列,让你求逆序对.我用的是归并排序来求的.归并排序有一个合并的过程 ...

  5. MySQL的InnoDB索引原理详解 (转)

    摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节. InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档).本着高效学习的目的,本 ...

  6. Two Strings Are Anagrams

    Write a method anagram(s,t) to decide if two strings are anagrams or not. 判断两个字符串里的字符是否相同,也就是是否能够通过改 ...

  7. Longest Common Substring

    Given two strings, find the longest common substring. Return the length of it. Example Given A = &qu ...

  8. [OpenJudge0054]特务会议召开

    [OpenJudge0054]特务会议召开 试题描述 在敌占区的特务时常会碰头.敌占区有n个城市,为保证安全,中央经过侦查,只选择了n-1条较安全的道路作为特务们碰头可以走的道路.每次开会,中央会选择 ...

  9. 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计

    <C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学    期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...

  10. win8_64下安装paramiko

    win8_64下安装paramiko C:\Python35\Scripts>easy_install paramiko 提示 C:\Python35\Scripts>python Pyt ...