Translucent Status Bar with No Navigation Bar

前端 未结 2 1125
孤城傲影
孤城傲影 2021-01-01 01:06

Goal: To have a table view scroll so that it shows semitransparent under the status bar while not displaying a navigation bar.

Right now, I have my tableView set to

2条回答
  •  既然无缘
    2021-01-01 01:42

    Your question is hard to guess without any code.I believe you trying to achieve a translucent status bar when tableview content scroll like you mentioned in Apple Music app.

    Try below code inside your viewdidLoad method.

    Step 1: To hide navigation bar. If your controller embedded with navigationController.

    navigationController?.navigationBar.isHidden = true
    

    Step 2: Place a statusBar size UIView to your controller to act as a translucent status Bar with adjusting alpha value.

     let statusBarView = UIView(frame: CGRect(x:0, y:0, width:view.frame.size.width, height: UIApplication.shared.statusBarFrame.height))
     statusBarView.backgroundColor=UIColor.white 
     statusBarView.alpha = 0.8 // set any value between 0 to 1
     view.addSubview(statusBarView)
    

    Above code will produce the following output.Let me know the code works for you.

    For more information how to set tableView frame and contentView take a look at my answer in the following link.


    Update:

    Improved Answer:

    You can use UIBlurEffectView to achieve better translucent effect.

        let statusBarView = UIView(frame: CGRect(x:0, y:0, width:view.frame.size.width, height: UIApplication.shared.statusBarFrame.height))
        let blurEffect = UIBlurEffect(style: .extraLight) // Set any style you want(.light or .dark) to achieve different effect.
        let blurEffectView = UIVisualEffectView(effect: blurEffect)
        blurEffectView.frame = statusBarView.bounds
        blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        statusBarView.addSubview(blurEffectView)
        view.addSubview(statusBarView)
    

    Output:

提交回复
热议问题