Swift - 状态栏颜色显示(字体、背景)
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的【背景部分】
背景部分,简单来说,就是背景色;改变方法有两种:
系统提供的方法
navigationBar的setBarTintColor接口,用此接口可改变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 - 状态栏颜色显示(字体、背景)的更多相关文章
- iOS8中如何将状态栏的字体颜色改为白色
网上的一些方法在我这行不通, 比如: UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent ...
- UGUI 字体背景长度自适应
本文实现以下需求: 在UGUI中 Text为动态添加 要使Text字体背景随着Text的长度而变化 之前还在赞叹UGUI的强大 转念一想,UGUI中好像没有可以实现此功能的组件 也想出了一种办法 把背 ...
- 酷炫字体背景图的实现——神奇的background-clip: text
愉快的时光总是飞快,七天小长假已接近尾声,抓住假期的尾巴,再学个新知识点——css的background-clip: text属性...会不会有种陌生的感觉,毕竟在我们的印象里,background- ...
- 李洪强iOS开发之-修改状态栏的字体的颜色
李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [ ...
- 白底黑字!Android浅色状态栏黑色字体模式(另)
小彬什么都想做任重致远 关注 2016.06.30 10:16* 字数 489 阅读 3234评论 3喜欢 12 前言 由于该死不死的设计湿,设计了一套白色状态栏的UI.当然在iOS上可以实现自适应, ...
- Swift自定义UINavigationController(背景颜色、背景图片、返回按钮设置、字体大小等)
1.0 自定义UINavigationController时,背景图片.颜色等只需要设置一次,所以我们可以重写 initializa 这个方法来实现我们想要的效果 override class ...
- android 设置状态栏与标题背景颜色一致
必须在Android4.4以上版本才能设置状态栏颜色: 一.在单个Activity里面,设置状态栏的背景: 效果: 1.在Activity的布局根文件中添加属性: android:fitsSystem ...
- iOS设置状态栏的字体颜色
设置statusBar的[前景色部分] 1.plist设置statusBar 在plist里增加一行 UIStatusBarStyle(或者是“Status bar style”也可以),这里可以设置 ...
- CSS 3. 文本|字体|背景|定位
1.文本属性和字体属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
随机推荐
- linux下好用的软件
搜狗输入法 http://pinyin.sogou.com/linux/ wps http://community.wps.cn/download/ 浏览器 chrome or FireFox or ...
- android Home键和返回键
在Android中,当按下Home键,默认情况下stop前台的actiity,即activity设置成onstop,而不是ondestory.如果再次启动该activity不是调用onCreate,而 ...
- linux 下开放端口问题
Linux安装Tomcat后本地可以正常访问,可是这时Tomcat还不能被外界访问需要在Linux默认防护墙上打开8080端口 打开 /etc/sysconfig/iptables [root@l ...
- HDU 1064 Financial Management
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1064 解题报告:用来凑个题数吧,看题的时间比过题的时间多的多,就是输入12个浮点数,然后输出平均数,只 ...
- hiberante学习笔记
1.配置文件(hibernate映射文件): 让hibernate知道该怎么样去load,store持久化对象: 1.1 数据库忌讳的字段名 1) User 2) index 2.数据库表中一对多,多 ...
- Linux之编译需要的文件变化时刻
- Python自动化之select、greenlet和gevent和事件驱动模型初探
进程.线程和协程的区别 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度. 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的). 协程和线程一样 ...
- [NOIP2015] 子串substring 题解
[题目描述] 有两个仅包含小写英文字母的字符串A和B.现在要从字符串A中取出k个互不重叠的非空子串,然后把这k个子串按照其在字符串A中出现的顺序依次连接起来得到一个新的字符串,请问有多少种方案可以使得 ...
- jquery 生成table表格 部分代码
想生成上面这样的table表格先看返回数据格式 <div id="create_img_tab"></div> window.onload = functi ...
- Struts2中的OGNL通配符
<action name="*_*" class="action.{1}Action" method="{2}"> 匹配,第一个 ...