2

4つのCABasicAnimationCAAnimationGroupにグループ化しました。しかし、問題はそれです

-(void) animationDidStop:(CAAnimation *)anim finished:(BOOL)flag

アニメーションごとに呼び出されることはありません。

CABasicAnimation *anim1;//code of anim1
anim1.deleagte=self;
CABasicAnimation *anim2://code of anim2
anim2.deleagte=self;
CABasicAnimation *anim3;//code of anim3
anim3.deleagte=self;
CABasicAnimation *anim4://code of anim4
anim4.deleagte=self;

CAAnimationGroup *animGrp;//code of animGrp
animGrp.delegate=self;
[imageView.layer addAnimation:animGrp forKey:@""];

私は何か間違ったことをしているのですか、それとも別のアプローチがありますか。

私の目的は、すべてのアニメーションのUIIImageViewの位置を変更することです。

したがって、anim1が終了したら、Imageを変更したいのですが、animationDidStopデリゲートを受け取りません。

4

1 に答える 1

3

ドキュメントには次のように記載されています

`CAAnimationGroup` allows multiple animations to be grouped and run concurrently

Note: The delegate and removedOnCompletion properties of animations in the animations property are currently ignored.

beginTimeアニメーションのを使用して、他のアニメーションの継続時間にを設定するだけで、別のアニメーションが終了した後にグループ内の1つのアニメーションを開始できますbeginTimeアニメーションのタイムワープはCAMediaTiming、プロトコルから継承されたプロパティの優れた説明を提供します。ただし、あなたの場合、1つのアニメーションをレイヤーに追加し、デリゲートを使用してそれを登録し、最初のアニメーションが終了した後に別のアニメーションをレイヤーに追加する方が便利な場合があります。

于 2012-09-04T10:35:56.387 に答える