Blur View Over CAG радиентный слой - серый

Я добавляю UIVisualEffectView для размытия моего вида. фон моего обзора представляет собой градиентный слой, и когда я добавляю размытие, он просто становится серым.

Это исчезающий вид:

    let fadeView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffect.Style.light))

Этот код запускается при нажатии кнопки:

    fadeView.frame = view.frame
    fadeView.center = view.center
    fadeView.alpha = 0.0
    fadeView.layer.zPosition = 1
    fadeView.isOpaque = true
    view.addSubview(fadeView)
    UIView.animate(withDuration: 0.3, animations: {self.fadeView.alpha = 1.0})

Любая помощь Заставить его размыть все цвета вида, а не только этот странный серый?

2 ответа

Я попробовал ваш же код в Xcode 10.1

Выход:

Код:

func BlurScreen() {

    let fadeView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffect.Style.dark))
    fadeView.frame = view.frame
    fadeView.center = view.center
    fadeView.alpha = 0.0
    fadeView.layer.zPosition = 1
    fadeView.isOpaque = true
    view.addSubview(fadeView)
    UIView.animate(
        withDuration: 1.3,
        animations: {
            fadeView.alpha = 1.0
        }
    )
}

Попробуйте добавить свой blurredView без затухания перехода. Действительно, UIVisualEffectView не очень хорошо работает с альфой, так что это может объяснить проблему. В документации есть параграф об этом:

Установка правильного значения альфа

При использовании класса UIVisualEffectView избегайте альфа-значений, которые меньше 1. При создании частично прозрачных представлений система объединяет представление и все связанные подпредставления во время прохода закадрового рендеринга. UIVisualEffectView объекты должны быть объединены как часть контента, на который они наложены сверху, чтобы выглядеть правильно. При установке значения альфа меньше 1 в представлении визуальных эффектов или любом из его суперпредставлений многие эффекты выглядят некорректно или вообще не отображаются.

Другие вопросы по тегам