交替动画循环

时间:2016-12-08 04:33:40

标签: swift animation swift3 ios10 uiviewanimation

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

2 个答案:

答案 0 :(得分:1)

使用持续时间为7秒的重复wrap it to use in python,包含两个关键帧:

  • keyframe animation从一开始就开始,持续时间为总持续时间的5/7,并以一种方式淡出。

  • first keyframe从5/7开始,持续时间为总持续时间的2/7,并以另一种方式淡出。

答案 1 :(得分:1)

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

在viewDidLoad中,而不是创建一个动画块并从内部调用你的淡入淡出方法,只需在每个方法中使用不同延迟值的单独动画块。

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

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