我有一个集合视图单元格,该单元格具有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
}
}
问题在于模糊视图变为可见,但没有任何动画。知道我在做什么错吗?
编辑: 感谢@TylerTheCompiler的回答,现在我已经为模糊效果本身更改了alpha的动画。问题是动画一直没有发生。
我在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)
}
}
}
谢谢!
答案 0 :(得分:0)
要设置模糊效果的动画,应将效果设置为nil:
blurEffectView.effect = nil
然后执行动画:
UIView.animate(withDuration: 0.5) {
blurEffectView.effect = UIBlurEffect(style: .light)
}