有时动画执行没有动画效果(零时间)。 在下面的代码中,有时代码打印"时间= 0.0000002"
let date = Date()
UIView.animate(withDuration: 0.2, animations: {
}) { (finish) in
print("Time = \(Date().timeIntervalSince(date))")
}
答案 0 :(得分:0)
这是因为你没有动画animations
块内的任何内容,所以这是正常的行为。您可以使用以下代码验证
let date = Date()
self.view.layer.opacity = 0.5
UIView.animate(withDuration: 2.0, animations:
self.view.layer.opacity = 1.0
}) { (finish) in
print("Time = \(Date().timeIntervalSince(date))")
}
animations
块的目的是在给定时间内对属性的起始值和结束值差异进行动画处理。一旦属性值达到animations
块中的给定值,它将立即调用finish
块。
如果你没有任何动画效果,只想在几秒钟之后再回调一次,可以使用Timer
或DispatchQueue
,例如,
Timer(timeInterval: 0.2, repeats: false) { timer in
// Do whatever you want
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
// Do whatever you want
}