2

我正在我的视图上执行动画。但我面临的问题很少。我必须按钮startAnimationStop Animation。为了在我的 imageview 上执行动画,我在startAnimation按钮的操作中使用了以下代码:

 UIViewAnimationOptions option = UIViewAnimationOptionRepeat + UIViewAnimationOptionAutoreverse;
[UIView animateWithDuration:2.5 delay:0.0 options:option
                 animations:^{
                     CGAffineTransform scale = CGAffineTransformMakeScale(2.0, 2.0);
                     CGAffineTransform translate = CGAffineTransformMakeTranslation(-50.0, -100.0);
                     CGAffineTransform mix = CGAffineTransformConcat(scale, translate);
                     imv.transform = mix; 
                 } 
                 completion:^(BOOL finished) {

                 }
 ];

这是有效的。现在我面临的问题是:

  1. 如何在我的 stopAnimation 按钮的操作上停止此动画?
  2. 如果 ImageView 是动画,然后我进入背景,我再次进入前景 ImageView 粘在那里并且不动画。

如何解决这些问题?

4

3 回答 3

5

在您的 stopAnimation 按钮上,您需要从 UIView 的图层中删除动画。首先你必须导入 Quartzcore.framework。

#import <QuartzCore/QuartzCore.h>


[yourView.layer removeAllAnimations];

至于您在进入后台并返回前台时暂停动画的其他问题,没有办法“暂停”动画。您最好的选择是通过restarting动画手动处理这种情况。

于 2012-05-23T07:07:35.887 回答
2

要停止动画,您可以使用

#import <QuartzCore/QuartzCore.h>
...

[imv.layer removeAllAnimations];

至于使动画重新启动,这是一个复杂的问题,答案取决于您希望应用程序在恢复时执行的操作。一种可能的答案是跟踪您将 ImageView 设置为动画的位置,然后在 ApplicationDidEnterBackground 中,您可以取消所有动画并将其移动到那里。然后,当您恢复时,它将位于正确的位置。

如果您真的想继续动画,我会阅读其他一些 Stack Overflow 答案,看看是否有帮助。

当应用程序从后台恢复时恢复动画停止的地方

iOS,从后台出来时重新启动动画

于 2012-05-23T07:09:17.380 回答
0

为了进一步参考,对于您响应的第二部分,您必须在执行任何操作之前将矩阵恢复为单位:

imv.transform = CGAffineTransformIdentity;
于 2015-04-25T12:07:54.990 回答