【问题标题】:Status bar Blur view (Translucent ) in swift 4.2 ios 12swift 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 也已打开

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

但它只给出一个白条

【问题讨论】:

    标签: ios swift uivisualeffectview uiblureffect


    【解决方案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 的上拉和下拉栏视图中看到的那样,我不是使用导航栏我不知道如何附加图像以便显示
    • 编辑了我的答案,请检查
    • 不,您分享的链接不起作用