Анимация UIVisualEffectView Радиус размытия?
Как говорится в заголовке, есть ли способ анимировать радиус размытия UIVisualEffectView? У меня есть динамический фон позади вида, поэтому дополнение ImageEffects не может быть использовано... Насколько мне известно, единственное, что можно сделать, это анимировать прозрачность, но iOS жалуется, говоря, что это нарушает EffectView, так что это определенно кажется плохой идеей... Любая помощь будет с благодарностью.
1 ответ
Ответ - да. Вот пример для анимации без размытия -> размытие:
// When creating your view...
let blurView = UIVisualEffectView()
// Later, when you want to animate...
UIView.animateWithDuration(1.0) { () -> Void in
blurView.effect = UIBlurEffect(style: .Dark)
}
Это позволит анимировать радиус размытия от нуля (полностью прозрачный, или, точнее, без эффекта размытия) до радиуса по умолчанию (полностью размытый) в течение одной секунды. И сделать обратную анимацию:
UIView.animateWithDuration(1.0) { () -> Void in
blurView.effect = nil
}
Получающиеся анимации плавно преобразуют радиус размытия, даже если вы фактически полностью добавляете / удаляете эффект размытия - UIKit просто знает, что делать за кулисами.
Обратите внимание, что это не всегда было возможно: до недавнего времени (не уверен, когда), UIVisualEffectView должен был инициализироваться с UIVisualEffect, и effect
свойство было только для чтения. Сейчас, effect
является необязательным и доступен для чтения / записи (хотя документация не обновляется...), а UIVisualEffectView содержит пустой инициализатор, позволяющий нам выполнять эти анимации.
Единственное ограничение заключается в том, что вы не можете вручную назначать пользовательский радиус размытия для UIVisualEffectView - вы можете анимировать только между "без размытия" и "полностью размыто".
РЕДАКТИРОВАТЬ: В случае, если кто-то заинтересован, я создал подкласс UIVisualEffectView
это дает вам полный контроль над радиусом размытия. Предостережение заключается в том, что он использует частный UIKit
API, так что вы, вероятно, не должны отправлять приложения на проверку, используя его. Однако это все еще интересно и полезно для прототипов или внутренних приложений: https://github.com/collinhundley/APCustomBlurView