不带导航栏的半透明状态栏

人气:252 发布:2022-10-16 标签: swift uinavigationbar

问题描述

目标:使表视图滚动,使其在状态栏下显示半透明,同时不显示导航栏。

现在,我将tableView设置为顶部锚点(因此从技术上讲在状态栏下面)。这会在您向上滚动表视图时将状态栏设置为纯色。我已将导航外观的barTintColor和半透明设置为YES,但没有成功。

有什么想法吗?视图在情节提要中实例化

推荐答案

如果没有任何code,很难猜出您的问题。我相信您试图在表格视图内容像您在Apple Music应用中提到的那样滚动时实现半透明状态栏。

viewdidLoad方法中尝试以下代码。

第一步:隐藏navigation bar。如果您的controller嵌入了navigationController

navigationController?.navigationBar.isHidden = true

第2步:将statusBar大小UIView放到您的控制器上,作为调整alpha值的半透明状态栏。

 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)

以上代码将产生以下输出。请让我知道代码是否适合您。

有关如何设置tableView framecontentView的详细信息,请查看我在以下link中的回答。

更新:

改进的答案:

您可以使用UIBlurEffectView获得更好的半透明效果。

    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)

输出:

342