【发布时间】:2020-07-11 06:16:27
【问题描述】:
我有一个集合视图单元格,其中有一个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 动画。问题是动画一直没有发生。
我在func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)中使用cell.blurEffectView.fadeInEffect()
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)
}
}
}
谢谢!
【问题讨论】:
-
@TylerTheCompiler 我认为这就是答案,因为它明确表示要避免 alpha 效应。我已更改为他们的解决方案,但仍然没有动画。
标签: ios swift uicollectionview uiviewanimation