开发者

CABasicAnimation delegate for animationDidStop?

开发者 https://www.devze.com 2022-12-26 17:20 出处:网络
I am following the example at the bottom of the page to call an animationDidStop function. http://www开发者_运维技巧.informit.com/articles/article.aspx?p=1168314&seqNum=2

I am following the example at the bottom of the page to call an animationDidStop function.

http://www开发者_运维技巧.informit.com/articles/article.aspx?p=1168314&seqNum=2

The author says:

I have an object that is designed specifically to be the delegate of animations and all it does is hold a reference to the target object, accept the animationDidStop: message and then release itself.

This suggests you shouldn't do:

[animation setDelegate:self];

I'm pretty new to app programming can someone outline how I might do this? Or send me a link where it is explained.


Implement:

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

on your delegate object. You can also implement:

- (void)animationDidStart:(CAAnimation *)theAnimation

to receive a call when the animation starts.

For more info, see the Delegates section of: http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CAAnimation_class/Introduction/Introduction.html


Sometimes setting your layer's actual value to the toValue when the animation completes is required. When it's a more complex animation such as animating the colors of a CAGradientLayer, this is required.

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
  self.gradientLayer.colors = (NSArray *)((CABasicAnimation*)theAnimation).toValue;
}


Just setting

[UIView setAnimationDelegate:self];

will not call any of the Animation delegate methods when the animation starts or ends.

This issue can be solved by one of the following workarounds.

1) In your implementation section add

@implementation MyViewWithAnimations <UIApplicationDelegate>


2) In your animation begin-commit-block add

[UIView setAnimationWillStartSelector:@selector(animationDidStart:)];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];


3) Do what Apple suggests and use the block-based animation methods instead.

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号