swift 4.2 ios 12中的状态栏模糊视图(半透明)

Posted

技术标签:

【中文标题】swift 4.2 ios 12中的状态栏模糊视图(半透明)【英文标题】:Status bar Blur view (Translucent ) in swift 4.2 ios 12 【发布时间】:2019-05-16 09:38:20 【问题描述】:

我试图根据背景模糊状态栏,就像我们拉下状态栏时一样。就像是看穿了

        let statusBarFrame = UIApplication.shared.statusBarFrame
        let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .light))
        visualEffectView.frame = statusBarFrame
        view.addSubview(visualEffectView)

我尝试了所有样式,但它确实变成了半透明 即使我尝试在情节提要中显示情节提要效果,但在模拟器中却没有尝试,甚至我的 Reduce Transparency 也已打开

我想在状态栏中实现这一点

但它只给出一个白条

【问题讨论】:

【参考方案1】:

您可以通过以下代码获取您的状态栏视图,然后尝试添加到视觉效果,如here

     let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
        let statusBar = statWindow.subviews[0] as UIView
        statusBar.backgroundColor = UIColor(red: 213 / 255.0, green: 0 / 255.0, blue: 0 / 255.0, alpha: 0.7)

extension UINavigationBar 
    func installBlurEffect() 
        isTranslucent = true
        setBackgroundImage(UIImage(), for: .default)
        let statusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.height
        var blurFrame = bounds
        blurFrame.size.height += statusBarHeight
        blurFrame.origin.y -= statusBarHeight
        let blurView  = UIVisualEffectView(effect: UIBlurEffect(style: .light))
        blurView.isUserInteractionEnabled = false
        blurView.frame = blurFrame
        blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        addSubview(blurView)
        blurView.layer.zPosition = -1
    

用法

navigationController?.navigationBar.installBlurEffect()

【讨论】:

兄弟,我不是要更改状态栏的文本颜色,而是要更改背景以模糊视图,就像我们在 iPhone 的上拉和下拉栏视图中看到的那样,我不是使用导航栏我不知道如何附加图像以便显示 编辑了我的答案,请检查 不,您分享的链接不起作用

以上是关于swift 4.2 ios 12中的状态栏模糊视图(半透明)的主要内容,如果未能解决你的问题,请参考以下文章

带有透明/模糊导航栏的 iOS 7 视图控制器布局问题

iOS 7 状态栏透明

如何使导航栏和状态栏模糊(UIBlurEffect)? iOS,斯威夫特 3

状态栏样式不会因单个视图而改变 - Swift 2/iOS9

Swift iOS - 即使我隐藏它,导航栏也不会保持隐藏状态

Swift:更改 iOS 13 的状态栏颜色