Swift

iOS开发技巧(Swift版):状态栏(UIStatus)设置

2016-10-25  本文已影响350人  Sam_xing

状态栏:  是指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;

上一篇下一篇

猜你喜欢

热点阅读