2016-07-19 67 views
0

我正在嘗試動畫幾個圓圈並同時更改其不透明度。在關鍵幀動畫期間更改不透明度Swift

 UIView.animateKeyframesWithDuration(2, delay: 0, options: .Repeat, animations: { 
     UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0.5, animations: { 
      self.innerRingView.alpha = 1 
     }) 
     UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: { 
      self.innerRingView.alpha = 0 
      self.middleRingView.alpha = 1 
     }) 
     UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: { 
      self.middleRingView.alpha = 0 
      self.outterRingView.alpha = 1 
     }) 
     UIView.addKeyframeWithRelativeStartTime(1.5, relativeDuration: 0.5, animations: { 
      self.outterRingView.alpha = 0 
     }) 
     }, completion: nil) 

出於某種原因,它不會繼續執行第二個動畫:

UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: { 
     self.middleRingView.alpha = 0 
     self.outterRingView.alpha = 1 
    }) 

正因爲如此,我的動畫是不行的。 innerRingView永遠不會回到0不透明度,outterRingView永遠不會出現(默認情況下,所有視圖都設置爲0 alpha)。

這似乎是什麼問題?

回答

2

問題似乎是與你的關鍵幀相對開始時間

UIView.addKeyframeWithRelativeStartTime 

它必須是在0到1,其中0代表整體的動畫的開始和範圍1表示整體的末端動畫。例如,對於持續時間爲兩秒的動畫,指定0.5的開始時間會導致動畫在整個動畫開始後的一秒鐘開始執行。

+0

Idindu擊敗了我。 (投票)。相對開始時間必須在範圍0(整個動畫的開始)和1(動畫的最後) –

+0

所以如果我想要整個動畫是2秒長。我的關鍵幀相對開始時間應該是2的比率嗎?所以0,0.25,0.5,0.75? – Bob

+0

每個動畫塊花費的時間與整個持續時間有關,您需要通過跟蹤累計時間來確保開始時間正確。您的比例AFAIK不需要是2的比例,但是在整個持續時間2內,實際動畫會在它們之間進行插值,這由參數選項參數指導。 – ldindu