我想一个接一个地显示多个动画。 gifArray
包含动画列表。我在for循环中循环这个数组。最后一个动画正在显示和完成。
如果仅在当前循环动画结束时如何继续每个循环?
for index in 0..<gifArray.count {
self.makeAnimation(value: index)
}
func makeAnimation(value: Int){
let anotherAnimationView = LOTAnimationView(name: gifNames[value])
animationView = anotherAnimationView
animationView?.play(completion: { finished in
print("completed")
})
self.view.addSubview(animationView!)
}
答案 0 :(得分:1)
您可以在功能中添加completionHandler
,animation
完成时可以调用该功能:
func makeAnimation(value: Int, onCompletion: @escaping (LOTAnimationView) -> Void) {
let anotherAnimationView = LOTAnimationView(name: gifNames[value])
animationView = anotherAnimationView
animationView?.play(completion: { finished in
print("completed")
onCompletion(animationView)
})
}
要使用它,请使用以下内容:
makeAnimation(value: 1000000) { (animationView) in
self.view.addSubview(animationView!)
}
答案 1 :(得分:0)
内部循环无法控制循环执行。所以我从for循环中取出了makeAnimation
函数。谢谢@Rashwan L的帮助。
self.callGIFAnimation(value: self.index){ (completed) in
if(completed) {
self.index = self.index + 1
if self.index < gifNames.count {
self.makeAnimation()
}
else {
return
}
}
}