У меня есть ячейка представления коллекции, которая имеет 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)
}
}
}
Спасибо!