Swift - 状态栏

iPhone的状态栏,在开发人员眼中分两部分:1.前景;2.背景;

  • 前景:顶部的要素(电池、时间、信号...)
  • 背景:背景色、背景图片

按阶段分也有两部分:1.启动过程中;2.启动后视图中。

  • 启动:和系统模式有关,设置 - 显示与亮度(浅色时前景为黑色,深色时前景为白色。):

修改前景

只修改启动阶段

默认情况下随系统设置变化,我们可以在工程配置中将其固定。


或者在info.plist中添加Status bar style ,选择相应的样式,两种方法二选一

修改进入页面后

统一修改,所有页面都一样:
  1. 修改Status Bar Style:
  2. 在info.plist中添加View controller-based status bar appearance 并设置成NO。意思是是否根据视图变化。选为NO,即不管控制器内容是什么颜色都统一

单独页面单独修改:

严格意义上说,颜色不是手动设置成某一种Dark或Light。而是个别页面根据背景色自动变化。如果没在info.plist中添加过View controller-based status bar appearance ,则默认就是自动改变。如果设置了,则将值设置为YES。
在info.plist中添加View controller-based status bar appearance 并设置成YES。即根据控制器内容,改变状态栏前景颜色。

我在VC中添加了两个View一黑一白。效果如图:

修改背景

设置一个纯色View,放在页面的顶部,充当状态栏背景。

    lazy var statusBarBgView: UIView = {
        let view = UIView(frame: CGRectMake(0, 0, screenWidth, statusBarHeight))
        view.backgroundColor = .white
        return view
    }()

设置一个渐变背景色

    lazy var statusBarBgView1: UIView = {
        let statusBarBgView = UIView(frame: CGRectMake(0, 0, screenWidth, statusBarHeight))
        let subLayer = CAGradientLayer()
        subLayer.frame = statusBarBgView.bounds
        let colors = [UIColor.red.cgColor, UIColor.blue.cgColor]
        subLayer.colors = colors
        subLayer.startPoint = CGPoint(x: 0, y: 0)
        subLayer.endPoint = CGPoint(x: 1, y: 0)
        statusBarBgView.layer.addSublayer(subLayer)
        return statusBarBgView
    }()

设置一个背景图片

    lazy var statusBarBgView2: UIImageView = {
        let imageView = UIImageView(image: UIImage(named: "img_qrcode_visitor_bg"))
        imageView.contentMode = .top
        imageView.clipsToBounds = true
        imageView.frame = CGRectMake(0, 0, screenWidth, statusBarHeight)
        return imageView
    }()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容