我有很多动画在加载根视图控制器时自动启动。这些动画包含在viewDidLoad
中。当我导航到我的下一个视图控制器并返回到根视图控制器时,所有动画都已停止。当我按下“主页”按钮然后返回视图时会出现相同的行为。
我确定我在这里遗漏了一些非常基本的东西但是会感激任何帮助。感谢。
编辑1 :
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self beeBobbing];
//animate the butterfly oscillating
[self butterflyOscillate];
}
-(void) beeBobbing
{
[UIView animateWithDuration:1.0f delay:0 options:(UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionAllowUserInteraction ) animations:^{
CGPoint bottomPoint = CGPointMake(215.0, 380.0);
imgBee.center = bottomPoint;
} completion:^(BOOL finished) {
}];
}
编辑2 :在视图之间切换时,这种类型的动画似乎重新启动:
-(void) animateClouds
{
[UIView animateWithDuration:30.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
CGPoint leftScreenCenter = CGPointMake(-420.0, 119.0);
imgClouds.center = leftScreenCenter;
} completion:^(BOOL finished) {
CGPoint rightScreenCenter = CGPointMake(1450.0, 119.0);
imgClouds.center = rightScreenCenter;
[UIView animateWithDuration:40.0f delay:0 options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionRepeat) animations:^{
CGPoint leftScreenCenter = CGPointMake(-420.0, 119.0);
imgClouds.center = leftScreenCenter;
} completion:^(BOOL finished) {
}];
}];
}
答案 0 :(得分:6)
我想如果你在viewWillAppear:
给出所有动画,那么它的工作正常......
而已...
:)
答案 1 :(得分:3)
viewDidLoad刚刚第一次加载控制器时被调用,如果你导航到其他viewControllers有一些推或你改变标签,你没有传入viewDidLoad ......
尝试在方法中启动动画 - (void)viewWillAppear:(BOOL)动画
答案 2 :(得分:2)
您需要在viewWillAppear:
中添加动画。初始化控制器并且从nib加载视图或在viewDidLoad
方法中创建视图(如果被覆盖)并且在控制器被销毁和创建之前不再被调用,将调用-loadView
一次再次。在您前后导航时触发的方法是viewWillAppear:
viewDidAppear
viewWillDisappear:
。
答案 3 :(得分:0)
我注意到您需要在viewDidAppear
或viewWillAppear
imgClouds.frame = set frame here and this is most important
[self beeBobbing];