2016-12-08 52 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,並以另一種方式消失。