iOS开发技巧(Swift版):状态栏(UIStatus)设置
状态栏: 是指iOS屏幕最上面的20像素高的部分,分为前景部分和背景部分
*前景部分: 包括电池、时间等部件;
*后景部分:显示颜色或图片的背景部分;
*状态栏字体为黑色:UIStatusBarStyle.Default(默认);
*状态栏字体为白色:UIStatusBarStyle.LightContent;
方法一:
1、在Info.plist中,将View controller-based status bar appearance设为NO。(如没有此选项可自行添加)
2、在AppDelegate.m中
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
或者
UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated:true)
(这2种书写方式在iOS9.0以后,官方基本上已经不推荐了。当然还可以用,相比较,第二种书写方式会报警告,所以在这里我用第一种书写方式)
*注:到此步状态栏已经基本设置完成!
3、在个别状态栏字体颜色不一样的VC中
方法二:(iOS9.0以后官方推荐的,个人觉得老方法好用)
在Info.plist中,将View controller-based status bar appearance设为YES,或者不设置(默认值就是YES, 则UIApplication.sharedApplication().statusBarStyle无效)
1、在VC中重写VC的preferredStatusBarStyle方法
2、在viewDidload中调用:self.setNeedsStatusBarAppearanceUpdate() (刚开始的时候需要此调用,后来莫名其妙的的不需要了😭)
*注:当VC在nav中时,上面的方法无效,VC中的preferredStatusBarStyle方法根本不用被调用。 原因是,self.setNeedsStatusBarAppearanceUpdate()发出后,只会调用navigation controller中的preferredStatusBarStyle方法,vc中的preferredStatusBarStyley方法跟本不会被调用。
解决方法有两个:
一:自定义一个UINavigationController的子类,在这个子类中重写childViewControllerForStatusBarStyle方法
二:设置navbar的barStyle属性会影响statusBar的字体和背景色。如下。
//status bar的字体为白色
//导航栏的背景色是黑色。
self.navigationController?.navigationBar.barStyle = UIBarStyle.Black;
//status bar的字体为黑色
//导航栏的背景色是白色,状态栏的背景色也是白色。
self.navigationController?.navigationBar.barStyle = UIBarStyle.Default;