2

这篇文章中作者说我们可以在切换标签后重新启动动画viewWillAppear

我打电话给我,startAnimation但仍然失败。viewWillAppearviewDidAppear

以下是我的代码的一部分。

- (void)startAnimation {
    [UIView setAnimationsEnabled:YES];
    [UIView animateWithDuration:0.5f
            delay:0.0f
            options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat
            animations:^(void){
                self.foreground.transform = CGAffineTransformMakeTranslation(0.0f, 5.0f);
            }
            completion:nil];
}

startAnimation动画在第一次调用in时效果很好viewDidLoad,但在切换到其他选项卡后它就不再起作用了。

应用程序从后台重新启动后它也不起作用,即使我已经注册了UIApplicationWillEnterForegroundNotificationfor的观察者startAnimation

请帮助我,我是iOS开发的新手,非常感谢。

4

1 回答 1

1

viewDidLoad 方法仅在您的视图控制器首次加载时被调用。

如果你想让你的动画在你从其他视图控制器返回到这个视图控制器时运行,你应该调用 viewWillAppear 中的动画方法,而不是 viewDidLoad。

要使动画返回到之前的值,然后再次动画,您首先将视图的变换设置为标识(将其设置为起点),然后调用您的 animationWithDuration 方法。

您可能会发现为视图的 frame.origin 或 center 属性设置动画比更改变换更容易。当您将平移与旋转、缩放变化等结合使用时,更改变换会变得复杂。此外,当变换属性不是 == 恒等变换时,框架属性不再有效。

于 2012-12-09T21:40:43.003 回答