[layer removeAllAnimations] 调用时如何让动画视图停留在当前位置
Posted
技术标签:
【中文标题】[layer removeAllAnimations] 调用时如何让动画视图停留在当前位置【英文标题】:How to let animating view stay at the current position when [layer removeAllAnimations] called 【发布时间】:2012-04-19 17:51:40 【问题描述】:如果有两个动画依次发生,我想删除第一个动画,并从当前位置开始第二个动画。在将第二个动画添加到图层之前,我使用 [layer removeAllAnimations] 取消了第一个动画,图层总是回到初始位置。我知道这是 removeAllAnimations 的默认操作,但我想知道是否有任何方法可以将图层设置为保持当前位置。 非常感谢。
更新—— 我通过获取presentationLayer位置并将其分配给模型层位置来完成此操作。而且我也用 - (void)animationDidStop:(UIAnimation*)动画完成:(BOOL)flag; 检查动画是否完成。
【问题讨论】:
您不必致电removeAllAnimations
(如果您担心内存泄漏)。无论如何:animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO;
通常会成功。
谢谢 rokjarc。是的,你是对的,但我想做的是在第一个动画完成之前取消它并开始第二个动画。我通过获取presentationLayer位置并将其分配给模型层位置来完成此操作。之后,我还修改了 animationDidStop 委托方法来检查动画是否停止。
【参考方案1】:
你可以使用:myView.frame = [[myView.layer presentationLayer] frame]
【讨论】:
以上是关于[layer removeAllAnimations] 调用时如何让动画视图停留在当前位置的主要内容,如果未能解决你的问题,请参考以下文章
removeAllAnimations 不适用于连续调用的动画
线程 1:EXC_BREAKPOINT CALayer removeAllAnimations 消息发送到 deallocated