我问题的简化版是我试图在collectionView单元格内的按钮上循环/重复播放动画,但是动画只执行一次。这是我位于collectionViewCell中的动画块:
func animateGlowingCircle() {
UIView.animate(withDuration: 1.0, delay: 0, options: [.autoreverse, .repeat], animations: {
self.glowCircle.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}, completion: nil)
}
我尝试从多个不同位置调用animateGlowingCircle():在collectionViewController的viewDidLoad或cellForRowAt中,以及在collectionView的绘制中。我能得到的最接近的动画仅执行一次,但不会循环。我在网上发现了大量有关单执行动画的信息,但没有循环播放的信息。任何帮助将不胜感激!
答案 0 :(得分:0)
弄清楚了:需要从collectionViewController的 willDisplayCell 方法中调用循环单元动画。像这样:
// In collectionViewController
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let timerCell = cell as! TimerCollectionViewCell
timerCell.animateGlowingCircle()
}
// In collectionViewCell (this is the same code posted with the question)
func animateGlowingCircle() {
UIView.animate(withDuration: 1.0, delay: 0, options: [.autoreverse, .repeat], animations: {
self.glowCircle.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}, completion: nil)
}