zoukankan      html  css  js  c++  java
  • 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的【背景部分】

    背景部分,简单来说,就是背景色;改变方法有两种:

    系统提供的方法

    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

        }

    天行健,君子以自强不息;地势坤,君子以厚德载物!
  • 相关阅读:
    移动平台开发第七周学习总结
    团队作业(2)项目选题
    人工智能汇总---政策-应用--技术
    机器人(人工智能python) arduino编程 scratch2.0 乐高ev3编程 教育政策及考试
    Scratch工具下载及学习视频等资料
    2019人工智能科普--汇总
    2018人工智能应用例子_汇总贴
    北大人工智能前沿讲座--第二讲 嵌入式人工智能
    《焦点访谈》 20180405 美举“大棒”我“亮剑”
    window10下安装python3.6.x 及环境变量的配置
  • 原文地址:https://www.cnblogs.com/gongyuhonglou/p/10311563.html
Copyright © 2011-2022 走看看