取消UIView动画

3
我使用以下代码来实现按钮抖动效果。当它正在进行时,我该如何取消它?
#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

    CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-10.0));
    CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(10.0));

    btn.transform = leftWobble;  // starting point

    [UIView beginAnimations:@"wobble" context:btn];
    [UIView setAnimationRepeatAutoreverses:YES]; // important
    [UIView setAnimationRepeatCount:20];
    [UIView setAnimationDuration:0.1];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)];

    btn.transform = rightWobble; // end here & auto-reverse
    [UIView commitAnimations];

我认为在2018年最好的方法是使用UIViewPropertyAnimator。 - marczellm
1个回答

8
您可以使用 CALayerremoveAllAnimations 方法:
[btn.layer removeAllAnimations];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接