交替动画循环

Alternating animation loop

我有一个异步淡出 UILabel 和 UIImage 的重复动画,但我不知道如何使 UIImage 出现的时间比 UILabel 长,我希望动画在标签和图像之间交替,以便图像显示持续 5 秒,标签显示持续 2 秒:

override func viewDidLoad() {
    super.viewDidLoad()

    UIView.animate(withDuration: 5, delay: 2.0, options:[UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse], animations: {
        self.fadeIn()
        self.fadeOut()
    }, completion: nil)
}

func fadeIn () {
    self.label.alpha = 0.0
    self.image.alpha = 1.0
}

func fadeOut () {
    self.label.alpha = 1.0
    self.image.alpha = 0.0
}

使用持续时间为 7 秒的重复 keyframe animation,由两个关键帧组成:

  • first keyframe从头开始,持续时间为总持续时间的 5/7,并以一种方式逐渐消失。

  • second keyframe 从 5/7 开始,持续时间是总持续时间的 2/7,然后向另一方向逐渐消失。

您可以通过多种方式实现您想要的效果。

在 viewDidLoad 中,无需创建动画块并从内部调用淡入淡出方法,只需在每个具有不同延迟值的方法中使用单独的动画块即可。

所以从 ViewDidLoad 中删除 UIView.animate 并简单地调用 fadeIn() 和 fadeOut(),然后在你的淡入淡出方法中添加 UIView.animate... 并设置你想要的持续时间和时间。这样你就可以更好地控制你的动画,你可以调整值直到你达到你想要的效果。

第二个选项将如前所述使用关键帧动画。