2017-02-20 15 views
0

[OK]を私は他のポストのトンを見ているが、私のアプローチは動作していません。私は一連の画像(2-7.png)を持っていて、それぞれの間で遅れて連続してアニメートしようとしています。私はこれを行うに:Swift:forループの遅延を伴うアニメーションが機能していませんか?

for i in 2...7 
      { 
         //code that runs after the transition is complete here 
         var bubView = UIImageView(frame: CGRect(x: 0, y: 0, width: 0, height: 0)) 
         bubView.image = UIImage(named: "\(i).png") 
         //bubView.backgroundColor = UIColor.black 
         bubView.center = CGPoint(x: bubView.center.x, y: self.bounds.height * 0.69) 
         self.addSubview(bubView) 

         UIView.animate(withDuration: 0.4, delay: 2.0, usingSpringWithDamping: 
          0.6, initialSpringVelocity: 1.25, options: [], animations: { 
           //thing being animated 
           bubView.frame = CGRect(x: 0, y: 0, width: self.screenSize.width, height: self.screenSize.width) 
           bubView.center = CGPoint(x: bubView.center.x, y: self.bounds.height * 0.69) 


         }, completion: { finished in 

          }) 


     } 

私はまた、アニメーションの遅延を持つだけforループの開始時に遅延を貼り付けるない試してみましたが、しかし、これですべての画像を一度でアニメーション化します。彼らはすべて2秒遅れている、そして、彼らはすべて来る。

どのように個別にそれぞれを遅らせることができますか?

答えて

1

あなたはそれらのすべてに同じアニメーションを与えているので、それらはすべて同時に起こっています。あなたがそれらを個別にアニメーション化したい場合は、これを試してみてください。

は、遅延時間を設定:2.0 *ダブル(I)

0

あなたは、同時にすべてのアニメーションを設定します。あなたが次に

animateView() 

はそれをより再利用可能にするために、入力を変更することを検討呼び出すガストンによって、または再帰的FUNC

func animateView(startWithView : Int = 2) { 
    //code that runs after the transition is complete here 
    var bubView = UIImageView(frame: CGRect(x: 0, y: 0, width: 0, height: 0)) 
    bubView.image = UIImage(named: "\(startWithView).png") 
    //bubView.backgroundColor = UIColor.black 
    bubView.center = CGPoint(x: bubView.center.x, y: self.bounds.height * 0.69) 
    self.addSubview(bubView) 

UIView.animate(withDuration: 0.4, delay: 2.0, usingSpringWithDamping: 
    0.6, initialSpringVelocity: 1.25, options: [], animations: { 
     //thing being animated 
     bubView.frame = CGRect(x: 0, y: 0, width: self.screenSize.width, height: self.screenSize.width) 
     bubView.center = CGPoint(x: bubView.center.x, y: self.bounds.height * 0.69) 


}, completion: { finished in 
    if startWithView < 7 { 
     animateView(startWithView: startWithView + 1) 
    } 
}) 
} 

を作成述べたように、あなたがiに応じて遅延時間を設定するか、欲しいものを達成するために、 。 私はこの解決策を考えていますが、ガストンの実装は簡単です。

関連する問題