如何在collectionView或tableView单元格中重复动画?

时间:2018-09-15 17:28:01

标签: ios swift uitableview uicollectionview ios-animations

我问题的简化版是我试图在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的绘制中。我能得到的最接近的动画仅执行一次,但不会循环。我在网上发现了大量有关单执行动画的信息,但没有循环播放的信息。任何帮助将不胜感激!

1 个答案:

答案 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)
}