ios - 查看动画有时会在零时间内执行

标签 ios swift ios11

有时动画执行时没有动画效果(零时间)。 在下面的代码中有时会打印“Time = 0.0000002”

let date = Date()
UIView.animate(withDuration: 0.2, animations: {

}) { (finish) in
    print("Time = \(Date().timeIntervalSince(date))")
}

最佳答案

这是因为您没有为 animations block 内的任何内容设置动画,因此这是正常行为。您可以使用以下代码进行验证,

 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 block 的目的是在给定时间为属性的开始值和结束值差异设置动画。一旦属性值达到animations block 中的给定值,它将立即调用finish block 。

如果您没有任何动画效果,只想在几秒钟后回调,最好使用 TimerDispatchQueue 例如,

Timer(timeInterval: 0.2, repeats: false) { timer in
    // Do whatever you want
}

DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
   // Do whatever you want
}

关于ios - 查看动画有时会在零时间内执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49828762/

相关文章:

swift - 如何在 Swift 3 中输入别名方法?

ios - 如何修复 Xcode 错误 : Could not locate device support files on iPhone with Xcode

ios - 复制数组中已有的项目

iphone - 在 ios 的 TableView 中选择第一项

ios - 核心数据 - 为什么即使在访问属性后对象数据仍然存在错误?

ios - 如何计算远离相机的矢量?

ios - 使用核心数据的最佳实践

apple-push-notifications - iOS 11 推送通知横幅现在在应用程序位于前台时显示

ios - iOS 中 CameraRoll.saveToCameraRoll 上的应用程序崩溃

ios - Xcode/swift/ watch 套件 : Watch Extension unintentionally shows push notification on app launch?