2016-07-19 11 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のアルファに設定されています)。

ここで問題と思われるものは何ですか?

答えて

2

問題は、範囲0 0全体アニメーションの開始を表す1、および1であることでなければならない

UIView.addKeyframeWithRelativeStartTime 

全体の終了を表すあなたのキーフレームの相対的な開始時間であるように思われアニメーション。たとえば、アニメーションの長さが2秒の場合、開始時間を0.5に指定すると、アニメーション全体が開始してから1秒後にアニメーションが開始されます。

+0

Idinduは私にそれを打つ。相対的な開始時間は0(アニメーション全体の先頭)と1(アニメーションの最後)の範囲内にある必要があります。 –

+0

アニメーション全体を2秒にしたい場合。キーフレームの相対開始時間を2の比率にする必要がありますか?だから0,0.25,0.5,0.75? – Bob

+0

各アニメーションブロックの所要時間は全体の持続時間に比例しており、累積時間を追跡することで開始時刻が正しいことを確認する必要があります。あなたの比率AFAIKは、2の比率である必要はありませんが、2の全体の期間内に、実際のアニメーションはoptionsパラメーターによって導かれるそれらの間を補間します。 – ldindu

関連する問題