2017-07-17 13 views
0

私はあるボタンをフェードインしてフェードアウトさせる機能を持っています。私はviewDidLoadでアニメーションを開始するので、アニメーションは私がアプリケーションを開くと動作しているので。ボタンは私を入力ウィンドウに連れて行き、入力フィールドに入力があったらアニメーションを止めたい。 Iveは条件付きのテキストからアニメーションを削除しようとしましたが、アニメーションは条件が満たされてもアニメーションを維持します。 このアニメーションを削除する関数を作成するにはどうすればよいですか?ボタンを止める方法条件でアニメ化

HERESに私のコード:

func animateText(){ 

    UIView.animate(withDuration: 0.5, animations: { 
     self.EnterDet.alpha = 1 
    }, completion: { 
     (Comnpleted : Bool) -> Void in 

     UIView.animate(withDuration: 0.5, delay: 1.5, options: UIViewAnimationOptions.allowUserInteraction, animations: { 
     self.EnterDet.alpha = 0.1 

     }, completion: { 
      (Completed : Bool) -> Void in 
      self.animateText() 
     }) 
    }) 
} 
+0

あなたはこれをfalseに設定してみてくださいましたか? .setAnimationsEnabled(有効:Bool) – brw59

+0

これは機能しません。問題はアニメーションが繰り返されていることだと思いますか?私はすぐに新しい、私はこれを停止する関数を作成するにはどこから始めたらいいですか? –

答えて

1

変更完了ブロックがcompletedパラメータを確認してください。 completedは、アニメーションが完了すると(キャンセルされなかった場合)trueとなります。 completedtrueの場合にのみ、アニメーションの次のステップを起動しますか?

UIView.animate(withDuration: 0.5, animations: { 
    self.EnterDet.alpha = 1 
}, completion: { 

(completed : Bool) -> Void in 
    if completed { 
     UIView.animate(withDuration: 0.5, delay: 1.5, options: UIViewAnimationOptions.allowUserInteraction, animations: { 
      self.EnterDet.alpha = 0.1 

     }, completion: { 
      (completed : Bool) -> Void in 
      if completed { 
       self.animateText() 
      } else { 
       self.EnterDet.alpha = 1 
      } 
     }) 
    } 
}) 

次に、あなたがアニメーションを終了したいとき、呼び出し:

self.EnterDet.layer.removeAllAnimations() 
+0

まだ動作しませんでしたか?私は条件を 'if Voutput.text!=" "{ self.EnterDet.layer.removeAllAnimations() } else { animateText()}'のように置くと、アニメーションはまだ消えませんか? –

+0

あなたはそのコードをどこに置いていますか? *両方の* '完了したら'ブロックを追加しましたか? – vacawama

+0

条件コードがViewDidAppearにあります –

関連する問題