6

ルート ビュー コントローラーが読み込まれると自動的に開始されるアニメーションがいくつかあります。これらのアニメーションは に含まれていviewDidLoadます。次のView Controllerに移動してルートView Controllerに戻ると、すべてのアニメーションが停止しました。「ホーム」ボタンを押してビューに戻ると、同じ動作が発生します。

ここで非常に基本的なものが欠けていると確信していますが、助けていただければ幸いです。ありがとう。

編集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は、コントローラーを最初にロードしたときに呼び出されるだけです。その後、プッシュして他のviewControllerに移動したり、タブを変更したりすると、viewDidLoadを渡しません...

メソッドでアニメーションを開始してみてください-(void)viewWillAppear:(BOOL)animated

于 2012-05-18T14:44:07.147 に答える
2

にアニメーションを追加する必要がありますviewWillAppear:viewDidLoadコントローラが初期化され、ビューがペン先からロードされるか、-loadViewメソッドで作成された場合(オーバーライドされた場合)に一度呼び出され、コントローラが破棄されて再度作成されるまで再度呼び出されません。前後に移動したときに起動するメソッドはviewWillAppear: viewDidAppear viewWillDisappear:です。

于 2012-05-18T14:44:14.070 に答える
0

私が気づいたのは、アニメーション化するビューの位置を設定する必要があることviewDidAppearですviewWillAppear

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