2016-12-08 31 views
-1

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

它看起来你是在同一时间执行两个。此外,你不重复动画。 –

回答

1

您可以通过多种方式实现您所达到的效果。

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

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

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

1

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

  • first keyframe开始在...处开始并且持续时间是总持续时间的5/7,并且以单向方式消失。

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