Строка состояния Размытый вид (Полупрозрачный) в Swift 4.2 IOS 12 - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь размыть строку состояния в зависимости от фона, как это работает, когда мы опускаем строку состояния. как сквозь

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

Я перепробовал все стили, но он изменился на полупрозрачный даже я пытался из раскадровок показывает эффект в раскадровке, но не в симуляторе, даже мой Уменьшить прозрачность также включен

enter image description here

Я хочу достичь этого в stausbar

enter image description here

но он дает только белую полосу

1 Ответ

1 голос
/ 16 мая 2019

Вы можете получить представление statusBar с помощью следующего кода, затем попробуйте добавить к визуальному эффекту, например, здесь

     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()
...