【问题标题】:Problems with UIView animationUIView 动画的问题
【发布时间】:2012-05-23 06:54:59
【问题描述】:

我正在对我的视图执行动画。但我面临的问题很少。我必须按下按钮的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 会粘在那里并且不动画。

如何解决这些问题?

【问题讨论】:

  • 您希望“停止”按钮将图像恢复到其原始位置还是暂停动画?
  • 当您重新进入您的应用程序时,您希望视图从您离开时的位置还是从一开始的位置开始动画?

标签: iphone ios core-graphics uiviewanimation cgaffinetransform


【解决方案1】:

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

#import <QuartzCore/QuartzCore.h>


[yourView.layer removeAllAnimations];

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

【讨论】:

  • 问题是重新启动动画不起作用..直到我从超级视图中删除我的图像视图并将其添加回来
  • 要重新启动动画,您可以执行以下操作 yourview.transform = CGAffineTransformIdentity;在此之后,如果您重新启动动画,它将起作用
【解决方案2】:

要停止动画,您可以使用

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

[imv.layer removeAllAnimations];

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

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

Restoring animation where it left off when app resumes from background

iOS, Restarting animation when coming out of the background

【讨论】:

  • 问题是重新启动动画不起作用..直到我从超级视图中删除我的图像视图并将其添加回来
【解决方案3】:

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

imv.transform = CGAffineTransformIdentity;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多