Подтвердить что ты не робот

Анимация UIVisualEffectView Blur Radius?

Как говорится в названии, существует ли способ оживить радиус размытия UIVisualEffectView? У меня динамический фон за представлением, поэтому дополнение ImageEffects не может быть использовано... Единственное, что может сделать это, насколько я знаю, - это оживить непрозрачность, но iOS жалуется на то, что это делает разрывы EffectView, поэтому он определенно кажется плохой идеей... Любая помощь была бы с удовольствием оценена.

4b9b3361

Ответ 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 является необязательным и read/write (хотя документация не обновляется...), а UIVisualEffectView включает пустой инициализатор, позволяющий нам выполнять эти анимации.

Единственное ограничение состоит в том, что вы не можете вручную назначить произвольный радиус размытия UIVisualEffectView - вы можете анимировать только между "без размытия" и "полностью размытым".

EDIT: В случае, если кто-то заинтересован, я создал подкласс UIVisualEffectView, который дает вам полный контроль над радиусом размытия. Предостережение заключается в том, что он использует частный UIKit API, поэтому вы, вероятно, не должны отправлять приложения для просмотра, используя его. Тем не менее, это все еще интересно и полезно для прототипов или внутренних приложений: https://github.com/collinhundley/APCustomBlurView