我按照页面底部的示例来调用animationDidStop
函数。
http://www.informit.com/articles/article.aspx?p=1168314&seqNum=2
作者说:
我有一个专门设计为动画委托的对象,它所做的只是保存对目标对象的引用,接受animationDidStop:消息然后释放自己。
这表明你不应该这样做:
[animation setDelegate:self];
我对应用程序编程很新,有人可以概述我如何做到这一点吗?或者给我一个解释的链接。
答案 0 :(得分:38)
实施:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
在您的委托对象上。您还可以实施:
- (void)animationDidStart:(CAAnimation *)theAnimation
在动画开始时接听电话。
有关详细信息,请参阅以下代理部分: http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Reference/CAAnimation_class/Introduction/Introduction.html
答案 1 :(得分:4)
有时需要在动画完成时将图层的实际值设置为toValue。当它是一个更复杂的动画,例如动画CAGradientLayer的颜色时,这是必需的。
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
self.gradientLayer.colors = (NSArray *)((CABasicAnimation*)theAnimation).toValue;
}
答案 2 :(得分:0)
只需设置
[UIView setAnimationDelegate:self];
在动画开始或结束时不会调用任何动画委托方法。
此问题可以通过以下解决方法之一解决。
1)在您的实施部分添加
@implementation MyViewWithAnimations <UIApplicationDelegate>
2)在你的动画中,begin-commit-block add
[UIView setAnimationWillStartSelector:@selector(animationDidStart:)];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:)];
3)做Apple建议并改为使用基于块的动画方法。