2016-12-08 11 views
-1

UILabelとUIImageを非同期的にフェードインする繰り返しアニメーションがありますが、UIImageをUILabelよりも長く表示する方法を理解できません。アニメーションループを交互に行う

override func viewDidLoad() { 
    super.viewDidLoad() 

    UIView.animate(withDuration: 5, delay: 2.0, options:[UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse], animations: { 
     self.fadeIn() 
     self.fadeOut() 
    }, completion: nil) 
} 

func fadeIn() { 
    self.label.alpha = 0.0 
    self.image.alpha = 1.0 
} 

func fadeOut() { 
    self.label.alpha = 1.0 
    self.image.alpha = 0.0 
} 
+0

私はあなたが同時に両方を実行しているように見えます。しかも、あなたはアニメーションを繰り返さない。 –

答えて

1

複数の方法で効果を得ることができます。

アニメーションブロックを作成し、内部からフェードメソッドを呼び出す代わりに、viewDidLoadでは、遅延値の異なる各メソッド内に別々のアニメーションブロックを配置するだけです。

したがって、ViewDidLoadからUIView.animateを削除し、単にjusをfadeIn()とfadeOut()を呼び出し、フェードメソッド内にUIView.animateを追加し、希望の期間とタイミングを設定します。こうすることで、アニメーションのコントロールがさらに強化され、必要な効果が得られるまで値を微調整できます。

第2のオプションは、前述のようにキーフレームアニメーションを使用することです。

1

使用2つのキーフレームから成る、7秒の期間でkeyframe animationを繰り返す:

  • first keyframe開始5秒の期間及びラベルに2秒の持続時間の間表示されます〜で開始し、全持続時間の5/7の持続時間を有し、一方向にフェードする。

  • second keyframeは、通過の5/7から開始し、合計持続時間の2/7の持続時間を持ち、逆に消えます。

関連する問題