这是我的代码:
let playableCards = self.allPlayableCardsViews[0].allSubviews.flatMap { $0 as? UIButton }
var counter: Double = 0
for card in playableCards{
UIView.animate(withDuration: 0.3, delay: TimeInterval(counter), options: .init(rawValue: 0), animations: {
card.alpha = 1.0
print("hello")
}, completion: nil)
counter += (3.7/Double(16))
}
通常在打印行中有一个功能。这个函数被称为循环量当然是好的。但是我想添加相同的延迟,让我的卡淡入。现在我的函数被调用没有延迟,导致16个函数在同一时间执行,这是我觉得很奇怪,因为我明显添加了延迟。我不想使用完成,因为函数需要在卡片淡入的同时执行。如何卡片一个接一个地消失并且函数(在这个例子中打印)被调用延迟?
我现在在调试会话中看到16次"你好"而卡片仍在消失。
谢谢。
答案 0 :(得分:5)
动画会延迟,但可以随时调用该块来确定动画的属性 - 这些不需要同时进行。
使用计时器在动画关闭的同时调用您的功能。如果您希望它由实际发生的动画触发,您可以在card.alpha
属性上使用键值观察(KVO)。