顺利停止核心动画旋转

时间:2009-09-10 20:37:46

标签: iphone core-animation

如何停止在iPhone上自定义绘制CALayer的旋转?

CATransform3D pausetransform = ((CALayer *)[layer presentationLayer]).transform;
[layer removeAllAnimations];
layer.transform = pausetransform;

停止动画,然后立即将图层稍微旋转一下。可能是因为在设置了pausetransform值后,动画会持续一段时间。

在动画的- (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally委托方法中设置layer.transform值会在动画旋转到正确位置之前短暂显示动画起始位置的图层。

2 个答案:

答案 0 :(得分:1)

事实证明,我在调用[layer removeAllAnimations]花了这么长时间来设置的UIActionSheet显示它推迟了动画的实际停止。通过将UIActionSheet的设置移动到- (void) animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finishednormally委托方法,旋转现在可以顺利停止。

答案 1 :(得分:0)

另一种方法是打电话

[view.layer removeAnimationForKey:@"name of your animation"];

但是,在两次删除中,根据您设置动画的方式,动画会在动画的下一次迭代时停止。如果,比方说,你以10度的增量旋转,动画将在下一个10度增量之前停止。