Swift - 状态栏

2024-12-25  本文已影响0人  追梦赤子心Year

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
    }()
上一篇 下一篇

猜你喜欢

热点阅读