В документации Apple (в настоящее время) говорится ...
При использовании класса UIVisualEffectView избегайте альфа-значений меньше 1.
а также
Установка альфа меньше 1 в представлении визуальных эффектов или в любом из его супервизоров приводит к тому, что многие эффекты выглядят некорректно или не отображаются вообще.
Я считаю, что здесь отсутствует какой-то важный контекст ...
Я бы предположил, что цель состоит в том, чтобы избежать значений альфа, которые меньше 1 для постоянного представления. По моему скромному мнению, это не относится к анимации вида.
Моя точка зрения - я бы предположил, что для анимации приемлемы альфа-значения меньше 1.
В терминальном сообщении говорится:
UIVisualEffectView просят анимировать его непрозрачность. Это приведет к тому, что эффект будет прерывистым, пока непрозрачность не вернется к 1.
Читая это тщательно, то эффект будет казаться разбиться. Мои соображения по этому поводу:
- кажущийся разрыв действительно имеет значение только для устойчивой точки зрения, а не для изменения;
- постоянный / неизменный
UIVisualEffect
представление с альфа-значением меньше 1 не будет отображаться так, как задумано / разработано Apple; а также
- сообщение в терминале не является ошибкой, а просто предупреждением.
Чтобы расширить ответ @ jrturton выше, который помог мне решить мою проблему, я бы добавил ...
Чтобы скрыть UIVisualEffect
использование следующего кода (Objective-C):
UIView.animateWithDuration(1.0, animations: {
self.blurEffectView.effect = UIBlurEffect(nil)
self.blurEffectView.alpha = 0
}, completion: { (finished: Bool) -> Void in
self.blurEffectView.removeFromSuperview()
} )
Я успешно использую оба метода: устанавливаю effect
свойство nil
и устанавливаю alpha
свойство на0
.
Обратите внимание , что установка effect
для nil
создает «хорошую вспышку» (за неимением лучшего описания) в конце анимации, при этом установив alpha
в0
создающих плавного перехода.
(Сообщите мне о любых синтаксических ошибках ... Я пишу в obj-c.)