Анимация альфа-подпредставления в ячейке представления коллекции - PullRequest
1 голос
/ 30 марта 2020

У меня есть ячейка представления коллекции, которая имеет UIVisualEffectView в качестве подпредставления. Это представление изначально имеет значение alpha = 0.0, и когда пользователь нажимает на ячейку, оно становится alpha = 1.0.

let blurEffect = UIBlurEffect(style: .light)
blurEffectView.effect = blurEffect
blurEffectView.frame = cardView.bounds
blurEffectView.alpha = 0.0
cardView.addSubview(blurEffectView)
blurEffectView.snp.makeConstraints { (make) in
    make.edges.equalToSuperview()
}

. Я делаю это, анимируя его следующим образом:

DispatchQueue.main.async {
    UIView.animate(withDuration: 0.5) {
           cell.blurEffectView.alpha = 1.0
     }
}

Проблема в том, что вид размытия становится видимым, но без какой-либо анимации. Есть идеи, что я делаю неправильно?

EDIT : Благодаря ответу @TylerTheCompiler я изменил анимацию альфы для самого эффекта размытия. Проблема в том, что анимация не происходит.

Я использую cell.blurEffectView.fadeInEffect() в func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

func fadeInEffect(_ style:UIBlurEffect.Style = .light, withDuration duration: TimeInterval = 1.0) {
        if #available(iOS 10.0, *) {
            let animator = UIViewPropertyAnimator(duration: duration, curve: .easeIn) {
                self.effect = UIBlurEffect(style: style)
            }
            animator.startAnimation()
        }else {
            // Fallback on earlier versions
            UIView.animate(withDuration: duration) {
                self.effect = UIBlurEffect(style: style)
            }
        }
    }

Спасибо!

1 Ответ

0 голосов
/ 30 марта 2020

Для анимации эффекта размытия вы должны установить для эффекта nil:

blurEffectView.effect = nil

, а затем выполнить анимацию:

UIView.animate(withDuration: 0.5) {
    blurEffectView.effect = UIBlurEffect(style: .light)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...