在this post中,作者说我们可以在viewWillAppear
中切换标签后重新启动动画。
我在startAnimation
和viewWillAppear
中都拨打了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开发的新手,非常感谢。
答案 0 :(得分:1)
方法viewDidLoad仅在首次加载视图控制器时被调用。
如果您希望在从其他视图控制器返回此动画时运行动画,则应在viewWillAppear中调用动画方法,而不是viewDidLoad。
要使动画返回到之前的值然后再次设置动画,您首先要将视图的变换设置为identity(将其设置为起点),然后调用animationWithDuration方法。
您可能会发现更容易为视图的frame.origin或center属性设置动画,而不是更改转换。当您将平移与旋转,比例更改等组合在一起时,更改变换会变得复杂。此外,当transform属性不是==身份变换时,frame属性不再有效。