美文网首页
Swift - 状态栏

Swift - 状态栏

作者: 追梦赤子心Year | 来源:发表于2024-12-25 16:51 被阅读0次

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
    }()

相关文章

网友评论

      本文标题:Swift - 状态栏

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