CALayer的动画结束回调?

Posted

技术标签:

【中文标题】CALayer的动画结束回调?【英文标题】:Animation End Callback for CALayer? 【发布时间】:2009-01-01 13:41:43 【问题描述】:

使用 iPhone CALayer,我想要我的精神层的旋转动画,但我还想要一个动画结束的回调,这样做很热吗?

我想也许我应该使用 CABasicAnimation,但我不知道如何使用 CABasicAnimation 进行旋转,有什么想法吗?

谢谢

【问题讨论】:

【参考方案1】:

如果为 CAAnimation 设置了委托,可以添加回调方法:

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

动画完成时调用。通过 CGAffineTransform 变换矩阵查找旋转动画的示例,如下链接:

http://iphonedevelopment.blogspot.com/2008/10/demystifying-cgaffinetransform.html

【讨论】:

【参考方案2】:

顺便说一句,您还可以通过将旋转 UIView 的调用包装在以下代码块中来对 UIView 动画执行相同类型的回调

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(rotationAnimationHasFinished:finished:context:)];
// Rotate the view here
[UIView commitAnimations];

然后定义一个委托方法

- (void)rotationAnimationHasFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context;

// Handle the completion of the animation

在您的委托中,它将在动画完成后执行您需要做的任何事情。

【讨论】:

以上是关于CALayer的动画结束回调?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIView 或 CALayer 绘制和动画?

动画 CALayer

动画CALayer的安全方法

CALayer 动画还原

CALayer.opacity 在 CATransaction 内没有动画

图像更改 CALayer 核心动画