美文网首页Swift
iOS开发技巧(Swift版):状态栏(UIStatus)设置

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

作者: Sam_xing | 来源:发表于2016-10-25 14:04 被阅读350次

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ffrruttx.html