iOS切换选项卡后重新启动动画

时间:2012-12-09 04:09:54

标签: uiview ios6 core-animation

this post中,作者说我们可以在viewWillAppear中切换标签后重新启动动画。

我在startAnimationviewWillAppear中都拨打了viewDidAppear,但仍然失败了。

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

- (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中的viewDidLoad首次显示动画时,动画效果很好,但切换到其他标签后,动画无效。

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您希望在从其他视图控制器返回此动画时运行动画,则应在viewWillAppear中调用动画方法,而不是viewDidLoad。

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

您可能会发现更容易为视图的frame.origin或center属性设置动画,而不是更改转换。当您将平移与旋转,比例更改等组合在一起时,更改变换会变得复杂。此外,当transform属性不是==身份变换时,frame属性不再有效。