集合视图单元格中子视图的动画alpha

问题描述 投票:1回答:1

我有一个以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)
            }
        }
    }

谢谢!

ios swift uicollectionview uiviewanimation
1个回答
0
投票

要设置模糊效果的动画,应将效果设置为nil:

blurEffectView.effect = nil

然后执行动画:

UIView.animate(withDuration: 0.5) {
    blurEffectView.effect = UIBlurEffect(style: .light)
}
© www.soinside.com 2019 - 2024. All rights reserved.