2

この投稿で、著者は でタブを切り替えた後にアニメーションを再開できると述べました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が、他のタブに切り替えた後は機能しません。

UIApplicationWillEnterForegroundNotificationforのオブザーバーを登録したとしても、アプリケーションがバックグラウンドから再起動した後も機能しませんstartAnimation

私を助けてください、私はiOS開発が初めてです、どうもありがとう。

4

1 に答える 1

1

メソッド viewDidLoad は、View Controller が最初にロードされたときにのみ呼び出されます。

他のビュー コントローラからこのビュー コントローラに戻ったときにアニメーションを実行する場合は、viewDidLoad ではなく、viewWillAppear でアニメーション メソッドを呼び出す必要があります。

アニメーションを以前の値に戻してから再びアニメーション化するには、まずビューの変換を ID に設定し (開始点に設定)、次に animationWithDuration メソッドを呼び出します。

変換を変更するよりも、ビューの frame.origin または center プロパティをアニメーション化する方が簡単な場合があります。平行移動と回転、スケール変更などを組み合わせると、変換の変更が複雑になります。また、変換プロパティが恒等変換ではない場合、フレーム プロパティは無効になります。

于 2012-12-09T21:40:43.003 に答える