6

当我的根视图控制器加载时,我有许多动画会自动启动。这些动画包含在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) {

        }];

    }];

}
4

4 回答 4

6

我想如果你把所有的动画都放进去,viewWillAppear:那么它的工作就很好......就是这样...... :)

于 2012-05-18T14:44:38.933 回答
3

viewDidLoad 只是在您第一次加载控制器时被调用,如果然后您通过一些推送导航到其他 viewControllers 或更改选项卡,则不会传入 viewDidLoad ...

尝试在方法中启动动画 - (void)viewWillAppear:(BOOL)animated

于 2012-05-18T14:44:07.147 回答
2

您需要将动画添加到viewWillAppear:. viewDidLoad当控制器初始化时调用一次,并且视图是从 nib 加载或在-loadView方法中创建(如果被覆盖)并且在控制器被销毁并再次创建之前不会再次调用。前后导航时触发的方法是viewWillAppear: viewDidAppear viewWillDisappear:.

于 2012-05-18T14:44:14.070 回答
0

我注意到的是,您需要设置要在其中设置动画的视图的位置viewDidAppearviewWillAppear

imgClouds.frame = set frame here and this is most important
[self beeBobbing];
于 2016-07-21T06:10:13.627 回答