2016-05-19 4 views
-1

私は約UIView Animationを勉強しています、私が "+ (void)setAnimationStartDate:(NSDate *)startDate; beginAnimations:context間:メソッドのデフォルトは(NSDate日)、私も「[NSDate dateWithTimeIntervalSinceNow:5]」、それは動作しませんしてみてください今あるのでcommitAnimations方法と、それはあまりにも、なぜ "+(void)setAnimationStartDate:(NSDate *)startDate;"役に立たなかった

[UIView beginAnimations:@"demo" context:nil]; 
[UIView setAnimationDuration:3.0f]; 
[UIView setAnimationStartDate:[NSDate date]]; 
// do something 
[UIView commitAnimations]; 

を動作しません。

このメソッドを使用しないと、通常通り動作します。ありがとう。

答えて

1

setAnimationStartDateは、このアニメーションの開始時刻を指定しています。だから、その時が来る前に始まらない。

Apple Documentationとしての状態、

コールbeginAnimationsの間に、この方法:コンテキスト:とcommitAnimationsメソッドは、アニメーションのセットの開始時刻を指定します。ビューのアニメーション化可能なプロパティを変更する前に、このメソッドを呼び出します。 (このメソッドをブロックベースのアニメーションと共に呼び出さないでください。)このメソッドを呼び出さないと、開始時間はCFAbsoluteTimeGetCurrent関数から返された値に設定され、できるだけ早くアニメーションを開始します。

この方法の使用は、iOS 4.0以降ではお勧めしません。代わりにブロックベースのアニメーションメソッドを使用してアニメーションを指定する必要があります。

詳細については、ドキュメントを参照してください。これが役立つ

希望:)

+0

こんにちは。私は '[NSDate dateWithTimeIntervalSinceNow:5]'を使用しようとします。しかし、5秒待っても動作しません。私はインターネットを検索し、誰かが '[UIView setAnimationStartDate:CFAbsoluteTimeGetCurrent()+ 5];'と言って、今コンパイルできません。 –

+0

はい、あなたは 'NSDate'型の代わりに' CFAbsoluteTime'種類のパラメータを渡すので! – Lion

+0

あなたは正確に何をしたいですか?ビューをアニメートしますか?あらかじめ定義された時間にアニメートしたいのですか? – Lion

0

ちょうどthatを見てください。クラスUIViewのメソッドanimateWithDuration:delay:options:animations:completion:でコードをリファクタリングするだけでよいと思います。

0

setAnimationDelay:を同じ機能として使用できます。できます!!

[UIView setAnimationDelay:5]; 

enter image description here Apple Documentationで詳細を参照してください。なぜsetAnimationStartDate:が機能しないのか分かりませんが、これは上の文書に記載されているように機能していたはずです。

+0

ありがとうございます。私は 'UIView'について学んでいます、私はちょうどすべてのメソッドを知りたいです。私はちょうどなぜ動作しないのか理解していません。 Appleがこのメソッドを変更した可能性があります。代わりに他のメソッドを使用します。 –

関連する問題