将三个动画间隔一秒钟的最佳方法是什么?

伯克

有没有比使用asyncAfter3 次更好的方法将这些动画间隔一秒

let firstAnimationTime = DispatchTime.now()
let secondAnimationTime = DispatchTime.now() + 1
let thirdAnimationTime = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: firstAnimationTime) {
    self.firstAnimation()
}
DispatchQueue.main.asyncAfter(deadline: secondAnimationTime) {
    self.secondAnimation()
}
DispatchQueue.main.asyncAfter(deadline: thirdAnimationTime) {
    self.thirdAnimation()
}
约翰·斯诺

您可以使用 UIView.animate(withDuration:delay:...)

甚至可以定义一个函数如下:

func animateSequentially(withDurations durations: [TimeInterval], animations: [(() -> Void)]) {

    guard durations.count == animations.count else {
        return
    }

    for index in 0..<animations.count {

        // calculate delay
        let delay: TimeInterval = durations[0..<index].reduce(TimeInterval(0), { delay, duration in
            return delay + duration
        })

        // perform animation
        UIView.animate(withDuration: durations[index],
                       delay: delay,
                       options: [],
                       animations: animations[index],
                       completion: nil)
    }
}

并像这样使用:

let myView = UIView()

let durations = [1, 0.5, 1.25]

let animations = [{ myView.backgroundColor = .red },
                  { myView.backgroundColor = .yellow },
                  { myView.backgroundColor = .blue }]

animateSequentially(withDurations: durations, animations: animations)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一秒钟的JavaScript真的是一秒钟吗?

来自分类Dev

一秒钟的JavaScript真的是一秒钟吗?

来自分类Dev

如何在一秒钟的间隔内获取字符

来自分类Dev

软件在任务栏中仅闪烁一秒钟。如何找出它是什么软件?

来自分类Dev

一秒钟内查询数量很高。

来自分类Dev

一秒钟后边界半径消失

来自分类Dev

一秒钟后悬停消失

来自分类Dev

如何显示图像一秒钟?SWIFTUI

来自分类Dev

骨干视图仅渲染一秒钟

来自分类Dev

需要循环睡眠一秒钟的时间

来自分类Dev

一秒钟后边界半径消失

来自分类Dev

花费一秒钟锁定屏幕

来自分类Dev

显示登录页面一秒钟

来自分类Dev

录制一秒钟的视频Swift?

来自分类Dev

一秒钟后在android中调用另一个意图

来自分类Dev

为什么如果不工作则要花一秒钟?(PHP)

来自分类Dev

为什么我的嵌套gridview只显示一秒钟?

来自分类Dev

为什么每次背景更改时Windows 10都会冻结一秒钟?

来自分类Dev

为什么我的操作系统挂起不到一秒钟?

来自分类Dev

如何在C中的两个printf之间等待一秒钟?

来自分类Dev

将批处理文件延迟一秒钟?

来自分类Dev

将CPU频率缩放设置为在缩小之前等待一秒钟

来自分类Dev

从CSS角度来看,单击,按住一秒钟然后拖走时,输入按钮处于什么状态?

来自分类Dev

使用linux hrtimer进行一秒钟的回调时,为什么会出现时间漂移?

来自分类Dev

一秒钟后将输入字段占位符(文本框水印)隐藏在焦点上

来自分类Dev

vmware:将焦点更改为来宾时,鼠标指针会停止一秒钟

来自分类Dev

在iOS中使用phonegap 3.0.0在大约一秒钟后将启动屏幕向上滚动

来自分类Dev

如果检索时间超过一秒钟,如何将按钮更改为“禁用”?

来自分类Dev

一秒钟后将输入字段占位符(文本框水印)隐藏在焦点上

Related 相关文章

  1. 1

    一秒钟的JavaScript真的是一秒钟吗?

  2. 2

    一秒钟的JavaScript真的是一秒钟吗?

  3. 3

    如何在一秒钟的间隔内获取字符

  4. 4

    软件在任务栏中仅闪烁一秒钟。如何找出它是什么软件?

  5. 5

    一秒钟内查询数量很高。

  6. 6

    一秒钟后边界半径消失

  7. 7

    一秒钟后悬停消失

  8. 8

    如何显示图像一秒钟?SWIFTUI

  9. 9

    骨干视图仅渲染一秒钟

  10. 10

    需要循环睡眠一秒钟的时间

  11. 11

    一秒钟后边界半径消失

  12. 12

    花费一秒钟锁定屏幕

  13. 13

    显示登录页面一秒钟

  14. 14

    录制一秒钟的视频Swift?

  15. 15

    一秒钟后在android中调用另一个意图

  16. 16

    为什么如果不工作则要花一秒钟?(PHP)

  17. 17

    为什么我的嵌套gridview只显示一秒钟?

  18. 18

    为什么每次背景更改时Windows 10都会冻结一秒钟?

  19. 19

    为什么我的操作系统挂起不到一秒钟?

  20. 20

    如何在C中的两个printf之间等待一秒钟?

  21. 21

    将批处理文件延迟一秒钟?

  22. 22

    将CPU频率缩放设置为在缩小之前等待一秒钟

  23. 23

    从CSS角度来看,单击,按住一秒钟然后拖走时,输入按钮处于什么状态?

  24. 24

    使用linux hrtimer进行一秒钟的回调时,为什么会出现时间漂移?

  25. 25

    一秒钟后将输入字段占位符(文本框水印)隐藏在焦点上

  26. 26

    vmware:将焦点更改为来宾时,鼠标指针会停止一秒钟

  27. 27

    在iOS中使用phonegap 3.0.0在大约一秒钟后将启动屏幕向上滚动

  28. 28

    如果检索时间超过一秒钟,如何将按钮更改为“禁用”?

  29. 29

    一秒钟后将输入字段占位符(文本框水印)隐藏在焦点上

热门标签

归档