4

Similar to this: How to make a Navigation Bar and Status Bar blurred (UIBlurEffect)? iOS, Swift 3

but we'd like to apply the UIBlurEffect on the StatusBar only, not the navigationbar. Is this possible?

Gaurav Sharma
  • 2,680
  • 3
  • 26
  • 36

3 Answers3

3

You can get your statusBar view by following code, then try add to visual effect like here

     let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
        let statusBar = statWindow.subviews[0] as UIView
//        statusBar.backgroundColor = UIColor(red: 23 / 255.0, green: 0 / 255.0, blue: 154 / 255.0, alpha: 0.7)
        statusBar.backgroundColor = UIColor(red: 213 / 255.0, green: 0 / 255.0, blue: 0 / 255.0, alpha: 0.7)
karthikeyan
  • 3,821
  • 3
  • 22
  • 45
  • It was easy to add the UIBlurEffect to this, thank you. – Gaurav Sharma Jul 06 '17 at 12:14
  • Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'App called -statusBar or -statusBarWindow on UIApplication: this code must be changed as there's no longer a status bar or status bar window. Use the statusBarManager object on the window scene instead. – Sentry.co Dec 11 '21 at 14:06
  • @Sentry.co pls check for updated code – karthikeyan Dec 24 '21 at 14:02
1
let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
    let statusBar = statWindow.subviews[0] as UIView
    statusBar.backgroundColor = UIColor.clear
    let blur = UIBlurEffect(style:.dark)
    let visualeffect = UIVisualEffectView(effect: blur)
    visualeffect.frame = statusBar.frame
    //statusBar.addSubview(visualeffect)
    visualeffect.alpha = 0.5
    self.view.addSubview(visualeffect)

try this

karthik
  • 159
  • 9
0

iOS 14/iOS 13 solution: You can get your statusBar blur effect, by following code in your viewDidLoad:

override func viewDidLoad() {
    super.viewDidLoad()

let blurryEffect = UIBlurEffect(style: .regular)
    let blurredStatusBar = UIVisualEffectView(effect: blurryEffect)
    blurredStatusBar.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(blurredStatusBar)
    blurredStatusBar.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    blurredStatusBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    blurredStatusBar.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    blurredStatusBar.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true }

Sample Image

Aidin
  • 1
  • 1