【发布时间】:2018-05-18 17:45:21
【问题描述】:
我有一个详细视图控制器,其中包含一个带有动画图像视图的重复轮播,如下所示:
func animateCarousel1(){
UIView.animate(withDuration: 1, delay: 3, options: .curveEaseInOut, animations:
//image animation
},completion: { (_) -> Void in
print("animation 1 complete")
self.animateCarousel2()
})
}
func animateCarousel2(){
UIView.animate(withDuration: 1, delay: 3, options: .curveEaseInOut, animations:
//image animation
},completion: { (_) -> Void in
print("animation 2 complete")
self.animateCarousel1()
})
}
在弹出这个视图并返回父视图时,我看到在调试控制台中,函数在后台继续被调用,重复同时,无限。
模拟器中的 CPU 使用率也跃升至 90%。
在弹出视图控制器之前我需要做某种 deinit 吗?我似乎无法理解这个。
【问题讨论】:
-
动画取消时调用完成处理程序。在调用另一个参数之前检查闭包的第一个参数(一个布尔值,
finished,表示它是否成功完成)。 -
或者也许使用关键帧动画来重复一系列动画,而不是使用这种完成块模式。
-
我不知道我的完成处理程序在动画被取消时也被调用了,我只是假设它们只在动画实际完成时调用。谢谢罗!
标签: ios swift uiview uinavigationcontroller