2016-04-24 6 views
0

私は最初に画面の中央に配置されたラベルを持っています。現在は、画面の中央から右端に移動し、自動逆戻りして元の位置に戻ります。私は別のanimateWithDurationを開始して、中央のリターンから画面の左の位置に移動してから、位置に自動復帰し、そこから順番にループするようにしたいと思います。animateWithDuration次々と

私はすでに最初の半分の作業を試みていますが、中央から左への遷移とループを開始する2番目の部分への継続方法はわかりません。

スウィフト2.0コード:

func animateRight() 
    { 
     UIView.animateWithDuration(1.0, delay: 0.0, options: [ .Autoreverse, .CurveEaseInOut], animations: { 
       label.center.x = self.view.frame.width/2 
      }, completion: { finished in 
       if finished { 
        label.frame.origin.x = 0.0 
        animateLeft() 
       } 
     }) 
    } 

    func animateLeft() 
    { 
     UIView.animateWithDuration(1.0, delay: 0.0, options: [ .Autoreverse, .CurveEaseInOut], animations: { 
       label.frame.origin.x = (self.view.frame.width/2) * -1 
      }, completion: { finished in 
       if finished { 
        label.center.x = self.view.frame.width/2 
        animateRight() 
       } 
     }) 
    } 

    // Start process 
    animateRight() 

答えて

1

あなたが右にアニメーション化するため作成し、完成に通話時間方法と同じアニメーションを呼び出す必要があります。このようなもの:

func animateRight() 
{ 
    UIView.animateWithDuration(1.0, delay: 0.0, options:[], animations: { 
     self.label.center.x = self.view.frame.width 
     }, completion: { finished in 
      if finished { 
       self.animateLeft() 
      } 
    }) 
} 

func animateLeft() 
{ 
    UIView.animateWithDuration(2.0, delay: 0.0, options: [ .Autoreverse, .Repeat, .CurveEaseInOut, .BeginFromCurrentState], animations: { 
     self.label.frame.origin.x = 0.0 
     }, completion: nil) 
} 
+0

これは良いです!私はそれをさらに進歩させましたが、それは間違って機能しています。視覚効果のために無限に繰り返すアニメーションなので、このループ全体が永遠に続くのは大丈夫です。コードを更新し、現在はanimateRight()を実行し、animationLeft()を順番に実行します。 animationLeft()はループし、animateRight()を決して呼び出しません。 – theflarenet

+0

私はコードを更新しました。右にアニメートすると.Autoreverseは使用されませんが、右に終了します。そして、左アニメーションを呼び出すと.Autoreverseと.Repeat –

+1

優秀!ありがとうございました! – theflarenet

関連する問題