【问题标题】:Alternating animation loop交替动画循环
【发布时间】:2016-12-08 04:33:39
【问题描述】:

我有一个重复的动画,它异步淡化 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
}

【问题讨论】:

  • 在我看来,您正在同时执行两者。此外,您不是在重复动画。

标签: swift animation swift3 ios10 uiviewanimation


【解决方案1】:

你可以通过多种方式达到你想要的效果。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    • second keyframe 从 5/7 处开始,持续时间为总持续时间的 2/7,反之则逐渐消失。

    【讨论】:

      猜你喜欢
      • 2017-05-13
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2013-07-03
      • 2015-07-12
      • 1970-01-01
      相关资源
      最近更新 更多