シーケンスUIImageViewフレームアニメーション& CGTransformアニメーション
-
05-07-2019 - |
質問
アニメーションをシーケンスするための戦略に関するヘルプが欲しいです。
UIImageViewをサブクラス化して、画像にカスタムアニメーションアクションを記述できるようにしました。イメージで呼び出すことができるアクションとして使用されるいくつかのメソッドを実装しました 例:
-(void)rotateAnim; //rotates the image by a few degrees using a CGAffine Transform
-(void)numbersFlashAnim; //uses the UIImageVew.animationImages array for a 14 frame animation.
-(void)moveLeftAnim; //uses another CGAffine Transform to change the imageView's position.
viewDidLoadメソッドで、UIImageViewサブクラスのインスタンスを作成します。これらのアニメーションを順番に呼び出す方法はありますか?
NSTimerを使用してアニメーションを処理することを考えていましたが、NSTimerオブジェクトを記述して複数のメソッド呼び出しを処理できるかどうかはわかりませんでした。
例:
[imageView rotateAnim]; //when this animation is done, I want to call:
[imageView numbersFlashAnim];
NSTimerの使用に関するいくつかの質問を見ましたが、この問題に特に関連する質問はありません。注:アップルのサイトの開発者向けドキュメントでは、performSelector:withObject:afterDelay:の使用も推奨されていますが、十分な柔軟性が得られるかどうか疑問に思っていました。
さらに、Cocos2dフレームワークをすでに見ており、それらのメソッドを使用できますが(シーケンスアクション:など)、UIKit / Foundationなどでこの問題を解決することを選択しています。
解決
アニメーションを使用していますか?内部で画像を回転させることができます [UIView beginAnimations:(NSString *)animationID context:(void *)context]ブロック。そこで、現在のアニメーションが終了した後に呼び出されるデリゲートメソッドを追加できます。そして、そこにあなたの番号を呼び出すことができますFlashAnim。 (私の英語はごめんなさい;-))