【发布时间】:2015-09-19 01:54:55
【问题描述】:
基本上,我有一个UITableView,我想在点击按钮时对其进行动画处理。每个单元格应按 1.10 缩放并返回其变换标识。这就是我使用UIView.animateKeyframesWithDuration 为每个单元格制作的两个不同动画。
但我想让它们彼此稍微延迟。所以我在这样的循环中调用这个方法:
for (index, cell) in tableView.visibleCells.enumerate() {
let delay = 0.1 * Double(index)
let duration = 0.5
UIView.animateKeyframesWithDuration(duration, delay: delay, options: [], animations: {
UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: duration * 1/2, animations: {
cell.transform = CGAffineTransformScale(cell.transform, 1.10, 1.10)
})
UIView.addKeyframeWithRelativeStartTime(1/2, relativeDuration: duration * 1/2, animations: {
cell.transform = CGAffineTransformIdentity
})
}, completion: nil)
}
问题是完成部分仅适用于每个动画。
我正在寻找一种在每个动画完成后做某事的方法。我怎样才能做到这一点?
【问题讨论】:
-
你不觉得你的问题有矛盾吗?可以为每个动画调用完成块,并且您想在每个动画完成后执行一些操作... ??您的意思是要为每个单元格调用一个方法(在单元格上的 2 个关键帧动画完成后)?
-
好吧,让我们假设每个对象只有一个动画。我只想在所有动画完成后调用一个方法。我考虑过创建一个包含要执行的动画数量的计数器,在每个动画块完成时将其递减,并在它变为 0 时通过使用
didSet {}检查它来执行我的方法,但我想知道是否有合适的方法来做它。
标签: ios swift core-animation