1. ホーム
  2. iphone

CALayerのアニメーション終了コールバック?

2023-11-17 16:13:48

質問

CALayerのアニメーションのためのコールバックはどこにあるのか(あるいは何かあるのか)疑問に思っています。具体的には、フレーム、位置などを変更するような暗黙のアニメーションのためです。UIViewでは、このようなことをすることができます。

[UIView beginAnimations:@"SlideOut" context:nil];
[UIView setAnimationDuration:.3];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animateOut:finished:context:)];
CGRect frame = self.frame;
frame.origin.y = 480;
self.frame = frame;
[UIView commitAnimations];

具体的には setAnimationDidStopSelector はCALayerのアニメーションのために欲しいものです。そのようなものはあるのでしょうか?

TIAです。

どのように解決するのですか?

私は自分の質問に答えました。アニメーションを追加する必要があります CABasicAnimation のようにします。

CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath:@"frame"];
anim.fromValue = [NSValue valueWithCGRect:layer.frame];
anim.toValue = [NSValue valueWithCGRect:frame];
anim.delegate = self;
[layer addAnimation:anim forKey:@"frame"];

そして、デリゲートメソッドを実装します。 animationDidStop:finished: を実装すればOKです。この機能があってよかった! :D