2011-11-10 7 views
1

ここで私が達成しようとしていることがあります。難しい2つのUIViewアニメーションを連結する

UILabelは100%アルファで表示され、UIViewアニメーションを使用して80ptまで移動します。そのアニメーションが終了するとすぐに、私はそれを80pts引き上げてアルファ0にフェードアウトさせたいと思います。私はこれらの2つのアニメーションを1つのシームレスなアニメーションとして表示します。

私はUIViewアニメーションでこれを行うことができ、次のように2番目のUIViewアニメーションをコンプリートブロックに配置すると考えました。ただし、完了ブロックが実行されるまでに遅延が発生し、2つのアニメーションがシームレスに見えなくなります。

誰でも私がやろうとしていることを行う最善の方法を教えてもらえますか?

ありがとうございます!

[UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear animations:^{ 
    myLabel.center = endPoint; 

} 
completion:^(BOOL finished) { 
    [UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear animations:^{     
     myLabel.center = endPoint2; 
     myLabel.alpha = 0; 
     } 
     completion:^(BOOL finished) { 
      NSLog(@"animations complete"); 
    }]; 
}]; 

答えて

0

これは動作するはずです。私は理由がない理由を参照してください。わずかな追加だけで、finishedブロックでアニメーションの完了を確認してください。アニメーション中のエラーを処理します。また、UILabelをタップ可能にする場合は、フラグUIViewAnimationOptionAllowUserInteractionを設定する必要があります。

[UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^{ 
     myLabel.center = endPoint; 
     myLabel.alpha = 1; 
    } 
    completion:^(BOOL finished) { 
     if(finished){ 
     [UIView animateWithDuration:1.2 delay:0 options:UIViewAnimationCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^{     
      myLabel.center = endPoint2; 
      myLabel.alpha = 0; 
      } 
      completion:^(BOOL finished) { 
       NSLog(@"animations complete"); 
     }]; 
     } 
    }]; 
+0

それはうまくいきません...うまく動作しますが、私が探しているシームレスな効果ではありません。それは80ピクセル上に移動し、少しの間停止し、最後の80ピクセルまで続けてフェードアウトします。私はそれがシームレスであり、2つのアニメーションのように見えないようにしようとしています。 – sayguh

+0

コードに小さな編集を1つ作成しました。最初のアニメーションからmyLabel.alpha = 1を削除しました。アニメーションが始まる前に既に1に設定されています – sayguh

関連する問題